Tag

 

mencari cihuahua

mencari cihuahua

Setelah mensuplai Lucence dengan string. Sekarang saya akan coba suplai dengan file. Saat ini saya hanya akan kasih dia plain text.

 

Jadi skenarionya, saya punya 3 file txt. Saya taruh dalam folder, katakanlah “datafile”. Setelah terindex, saya akan coba cari dengan kalimat tertentu dan Lucence harus bisa menunjukkan lokasi dimana kalimat itu ada.

File 1 berisi kalimat: “The quick brown fox jumps over the lazy dog”
File 2 berasal dari tulisan agus dikompas:  Titik nol 206   (perjalanan agus di pakistan)
File 3 berasal dari kompas juga: Jalan-jalan ke toko sepeda 

Kalimat yang saya cari: “toko sepeda pakistan”. Pasti enggak relevan. Tidak tahu apakah ada toko sepeda dipakistan. Seperti google juga, hasil search akan menunjukkan kemungkinan2 yang salah dan memaksa kita mencari yang benar. Dan ini umum. Kayaknya Lucence bisa kita tanya dengan cara berbeda dan menghasilkan pencarian yang akurat.

Berikut ini saya melakukan indexing

[Test]
        public void TestCreatingIndexFromFiles()
        {
            System.IO.DirectoryInfo dataDir = new System.IO.DirectoryInfo("datafile");
            Lucene.Net.Store.Directory indexDir = Lucene.Net.Store.FSDirectory.GetDirectory("index", true);
            IndexWriter idxWriter = new IndexWriter(indexDir, new StandardAnalyzer(), true);

            FileInfo[] files = dataDir.GetFiles("*.txt");
            foreach (FileInfo f in files)
            {
                IndexIt(idxWriter, f);
            }
            idxWriter.Optimize();
            idxWriter.Close();
        }
        private void IndexIt(IndexWriter idxWriter,FileInfo file)
        {
            Document doc = new Document();
            doc.Add(new Field("contents", file.OpenText()));
            doc.Add(new Field("filename", file.FullName, Field.Store.YES, Field.Index.UN_TOKENIZED));
            idxWriter.AddDocument(doc);
        }

Kemudian saya cari dengan

[Test]
public void TestSearchingFromIndexedFiles()
{
this.TestCreatingIndexFromFiles();
Lucene.Net.Store.Directory dir = FSDirectory.GetDirectory(“index”, false);
IndexSearcher searcher = new IndexSearcher(dir);

Query qry = new Lucene.Net.QueryParsers.QueryParser(“contents”, new StandardAnalyzer()).Parse(“toko sepeda pakistan”);
Hits hits = searcher.Search(qry);

for (int i = 0; i < hits.Length(); i++) { Document doc = hits.Doc(i); string contentValue = doc.Get("filename"); Console.WriteLine(contentValue); } } [/sourcecode] Apa itu IndexWriter, IndexSearcher, Field, Query, Document, dll akan saya post dalam post berikutnya.

Iklan