Lucene Searcher只返回一个比赛结果

时间:2011-07-02 11:23:23

标签: c# c#-4.0 lucene lucene.net

我的搜索文本为“ma”,我有两个lucene文档,其中包含ma作为文本。但作为回报,我只得到一份文件。

以下是代码:

//adding deocument 
document.Add(new Field("Text",text,Field.Store.YES, Field.Index.TOKENIZED));

//search logic :

IndexReader reader = IndexReader.Open(GetFileInfo(indexName));
//create an index searcher that will perform the search
IndexSearcher searcher = new IndexSearcher(reader);

//List of ID
List<string> searchResultID = new List<string>();

//build a query object
QueryParser parser = new QueryParser("Text", analyzer);
parser.SetAllowLeadingWildcard(true);
Query query = parser.Parse(searchText);
//execute the query
Hits hits = searcher.Search(query);

2 个答案:

答案 0 :(得分:2)

也许你可以使用luke。它是一个有用的诊断工具,可以显示现有Lucene索引的内容并执行其他有趣的操作。我自己没有使用它,所以我不确定,但我认为它可以帮助你调试这个问题。祝你好运!

答案 1 :(得分:0)

我能够解决我的问题:

Index Writer只能创建一次。如果不创建新的IndexWriter,您可以检查索引是否退出。例如:

// IndexWriter Contructor的最后一个参数bool,表示你想创建一个newIndexWriter

IndexWriter writer = new IndexWriter(GetFileInfo(indexName), analyzer, true);

在添加新文档时,您必须检查索引是否存在,如果存在,则只需将bool param作为false传递给IndexWriter构造函数:

IndexWriter  writer = new IndexWriter(GetFileInfo(indexName), analyzer, false);
 writer.AddDocument(CreateDocument(Id, text, dateTime));
 writer.Optimize();
 writer.Close();