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")); }
内容原创于http://www.cnblogs.com/landfill/

浙公网安备 33010602011771号