目前我是这样的:
IndexSearcher searcher = new IndexSearcher(lucenePath);
Hits hits = searcher.Search(query);
Document doc;
List<string> companyNames = new List<string>();
for (int i = 0; i < hits.Length(); i++)
{
doc = hits.Doc(i);
companyNames.Add(doc.Get("companyName"));
}
searcher.Close();
companyNames = companyNames.Distinct<string>().Skip(offSet ?? 0).ToList();
return companyNames.Take(count??companyNames.Count()).ToList();
如您所见,我首先收集所有字段(数千个),然后区分它们,可能会跳过一些并删除一些。
我觉得应该有更好的方法来做到这一点。
最佳答案
将这个问题与您之前的一个问题联系起来(回复:“子句太多”),我认为您绝对应该查看索引阅读器的术语枚举。缓存结果(我使用以字段名称为键的排序字典,以术语列表作为数据,每个字段最多 100 个术语)直到索引阅读器变得无效并离开。
或者我应该说,当遇到与您类似的问题时,我就是这样做的。
希望对您有所帮助,
关于c# - 从 Lucene 查询中获取不同值的更快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/618227/