c# - 从 Lucene 查询中获取不同值的更快方法

标签 c# lucene

目前我是这样的:

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/

相关文章:

c# - 何时使用 this 关键字作为函数参数

c# - 为什么 sizeof(Point) 是 8?

java - Lucene 搜索两个或多个单词在 Android 上不起作用

SOLR - 如何对 bool 值进行模糊搜索

c# - 在 Controller 中生成 token

c# - 使用 LINQ 按不等式和最大组大小对 C# 集合进行分组

c# - MS Word 插件,添加一个按钮,右键单击所选文本会弹出

java - 如何正确转义 lucene 查询?

lucene - Elasticsearch-搜索 Assets 可用性

lucene - Solr lucene 和 "similar"关键字