Lucene.net搜索功能

搜索所采用的分词算法必须和索引的一致。

 string kw = Console.ReadLine();
FSDirectory directory = FSDirectory.Open(new DirectoryInfo(indexPath), new NoLockFactory());
            IndexReader reader = IndexReader.Open(directory,true);
            IndexSearcher searcher = new IndexSearcher(reader);
            PhraseQuery query = new PhraseQuery();
            foreach (string word in kw.Split(' '))//先用空格,让用户去分词,空格分隔的就是词“计算机   专业”
            {
                query.Add(new Term("body", word));
            }
            query.SetSlop(100);
             TopScoreDocCollector collector = TopScoreDocCollector.create(1000, true);
                searcher.Search(query, null, collector);
         ScoreDoc[] docs = collector.TopDocs(0, collector.GetTotalHits()).scoreDocs;
 for (int i = 0; i < docs.Length; i++)
                {                    
                    int docId = docs[i].doc;
                    Document doc = searcher.Doc(docId);
                   Console.WriteLine(doc.Get("number"));
                Console.WriteLine(doc.Get("body"));
            }

 

posted @ 2017-02-22 11:43  双鱼小毅  阅读(123)  评论(0)    收藏  举报