【发布时间】:2011-08-20 12:47:18
【问题描述】:
我正在使用 Lucene.net 来尝试了解如何在我的应用程序中实现它。
我有以下代码
.....
// Add 2 documents
var doc1 = new Document();
var doc2 = new Document();
doc1.Add(new Field("id", "doc1", Field.Store.YES, Field.Index.ANALYZED));
doc1.Add(new Field("content", "This is my first document", Field.Store.YES, Field.Index.ANALYZED));
doc2.Add(new Field("id", "doc2", Field.Store.YES, Field.Index.ANALYZED));
doc2.Add(new Field("content", "The big red fox jumped", Field.Store.YES, Field.Index.ANALYZED));
writer.AddDocument(doc1);
writer.AddDocument(doc2);
writer.Optimize();
writer.Close();
// Search for doc2
var parser = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "content", new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29));
var query = parser.Parse("big abcdefg test1234");
var searcher = new IndexSearcher(indexDirectory, true);
var hits = searcher.Search(query);
Assert.AreEqual(1, hits.Length());
var document = hits.Doc(0);
Assert.AreEqual("doc2", document.Get("id"));
Assert.AreEqual("The big red fox jumped", document.Get("content"));
这个测试通过了,这让我有点沮丧。我认为这意味着 Lucene.Net 使用 OR 来搜索术语而不是 AND,但我找不到任何有关如何实际执行 AND 搜索的信息。
我想要的最终结果是,如果有人搜索“Matthew Anderson”,我不希望它显示引用“Matthew Doe”的文档,因为这与任何方式、形状或形式都不相关.
【问题讨论】:
标签: c# search lucene lucene.net