public void CreateSketch(IList<IList<int>> invindex, int maxvalue) { // after PermSortByFreq the invindex is permutated too var L = new IList<int>[invindex.Count]; for (int i = 0; i < L.Length; i++) { L [i] = invindex [i]; } this.PermSortByFreq (L, maxvalue); this.Sketch = new ListSDiff64 (); Console.WriteLine ("Creating sketch of the text"); Chronos C = new Chronos (); C.Start (); var S = new InvIndexSketchBuilder (L, this.N); S.Build (this.Sketch, this.AlphabetBlock); C.End (); C.PrintStats (); }
public static void testLSHV(string listname, string qlist, int Q, int S) { int porcen=0; int numconsult=0; Console.WriteLine("<-- Building LSH Multiple Tables -->"); string indexName = string.Format("Index.LSC.Prueba.xml"); HammingMLSC I; if (!File.Exists(indexName)) { I = new HammingMLSC(); I.SeqBuilder = SequenceBuilders.GetSeqXLB_SArray64 (16); if (! (File.Exists(listname + ".header"))) { var A = new AudioSpace(); A.Build(listname, 30*3, 3); } I.Build(indexName,"audio-space",listname,20,1); } I = IndexLoader.Load(indexName) as HammingMLSC; Console.WriteLine("<-- Searching first object -->"); var aspace = (AudioSpace)I.MainSpace; Chronos tiempo = new Chronos(); foreach (var qname in (new QueryStream(qlist)).Iterate()) { numconsult++; Console.WriteLine ("<<<--- Inizializing query --->>>"); tiempo.Start(); var R = SearchAudio (qname, aspace,I); tiempo.End(); if(R.Count>0){ porcen++; } Console.WriteLine ("qname: {0}",qname.QRaw); tiempo.PrintStats("****Tiempo de consulta****"); var qext = BinaryHammingSpace.ParseAndLoadFromFile(qname.QRaw,false); foreach ( var p in R){ Console.WriteLine ("docid: {0}, dist: {1}, name: {2}",p.docid, p.dist, aspace.GetNameFromDocId(p.docid)); var audio = aspace.GetAudio(p.docid); var distanciaHamming = BinaryHammingSpace.DistMinHamming(audio,qext,aspace.SymbolSize); Console.WriteLine ("***********DocId: {0}, Distancia BinaryHamming: {1}***************",p.docid, distanciaHamming); Console.WriteLine ("***********Error: {0}%",distanciaHamming/(qext.Count/aspace.SymbolSize * 24)*100); } Console.WriteLine ("<<<--- Finalizing query --->>>"); } Console.WriteLine("Porcentaje de respuesta: {0}%",porcen*100/numconsult); }