无法使用 Lucene.net 获取搜索到的文档
Unable to get the searched document using Lucene.net
我是 Lucene.net 的新手。我有一种情况需要在文件夹中的所有文档中搜索用户输入的关键字。
我已经索引了文件夹中的所有文件,并准备了用户输入的关键字的查询并进行了搜索。
问题是我可以获取匹配项,但当我尝试迭代匹配项时,我无法从匹配项的文档中获取字段。
这是我的代码。
public void Searching()
{
Analyzer analyzer = new StandardAnalyzer(luceneVersion.Version.LUCENE_29);
QueryParser parser = new QueryParser(luceneVersion.Version.LUCENE_29, "content", analyzer);
Query query = parser.Parse(txtSearchText.Text);
Directory directory = FSDirectory.Open(new System.IO.DirectoryInfo(txtIndexPath.Text.Trim()));
Searcher searcher = new IndexSearcher(IndexReader.Open(directory, true));
TopScoreDocCollector collector = TopScoreDocCollector.Create(100, true):
searcher.Search(query, collector);
ScoreDoc [] hits = collector.TopDocs(). ScoreDocs;
foreach (ScoreDoc hit in hits)
{
int id = hit.Doc;
float score = hit.Score;
Document doc = searcher.Doc(id);
string content = doc.Get("content"); // null
}
}
尝试调试时,我得到的内容是空的。
我是不是遗漏了我的代码中的任何内容,这简直让我困扰了半天。请帮帮我。
提前致谢。
我一直在尽我所能地尝试这个。问题是我一直在索引,但没有将文档的 id 字段存储在索引文件中。
这是我在编制索引时使用的代码。
doc.Add(new Field("id", id, Field.Store.NO, Field.Index.ANALYZED);
虽然它应该像下面这样,以便在索引文件中可用。
doc.Add(new Field("id", id, Field.Store.YES, Field.Index.ANALYZED);
我是 Lucene.net 的新手。我有一种情况需要在文件夹中的所有文档中搜索用户输入的关键字。
我已经索引了文件夹中的所有文件,并准备了用户输入的关键字的查询并进行了搜索。
问题是我可以获取匹配项,但当我尝试迭代匹配项时,我无法从匹配项的文档中获取字段。
这是我的代码。
public void Searching()
{
Analyzer analyzer = new StandardAnalyzer(luceneVersion.Version.LUCENE_29);
QueryParser parser = new QueryParser(luceneVersion.Version.LUCENE_29, "content", analyzer);
Query query = parser.Parse(txtSearchText.Text);
Directory directory = FSDirectory.Open(new System.IO.DirectoryInfo(txtIndexPath.Text.Trim()));
Searcher searcher = new IndexSearcher(IndexReader.Open(directory, true));
TopScoreDocCollector collector = TopScoreDocCollector.Create(100, true):
searcher.Search(query, collector);
ScoreDoc [] hits = collector.TopDocs(). ScoreDocs;
foreach (ScoreDoc hit in hits)
{
int id = hit.Doc;
float score = hit.Score;
Document doc = searcher.Doc(id);
string content = doc.Get("content"); // null
}
}
尝试调试时,我得到的内容是空的。
我是不是遗漏了我的代码中的任何内容,这简直让我困扰了半天。请帮帮我。
提前致谢。
我一直在尽我所能地尝试这个。问题是我一直在索引,但没有将文档的 id 字段存储在索引文件中。
这是我在编制索引时使用的代码。
doc.Add(new Field("id", id, Field.Store.NO, Field.Index.ANALYZED);
虽然它应该像下面这样,以便在索引文件中可用。
doc.Add(new Field("id", id, Field.Store.YES, Field.Index.ANALYZED);