Lucene.net “Lucene”;包括「;关于索引子集的搜索

Lucene.net “Lucene”;包括「;关于索引子集的搜索,lucene.net,Lucene.net,我有一个索引,里面有大约500万个文档,我正试图对这些文档进行“包含”搜索。我知道如何做到这一点,我已经向客户解释了性能成本,但这正是他们想要的。正如预期的那样,对整个索引执行“包含”搜索非常缓慢,但有时我只想搜索索引的一小部分(比如100个文档左右)。为此,我在搜索中添加了一个过滤器,可以正确限制搜索结果。然而,我发现这个搜索和整个索引搜索的性能几乎完全相同。这里有我遗漏的东西吗?感觉此搜索也在搜索整个索引。向搜索添加筛选器不会限制索引的范围 你需要更清楚地知道你从搜索中需要什么,但我不相信你

我有一个索引,里面有大约500万个文档,我正试图对这些文档进行“包含”搜索。我知道如何做到这一点,我已经向客户解释了性能成本,但这正是他们想要的。正如预期的那样,对整个索引执行“包含”搜索非常缓慢,但有时我只想搜索索引的一小部分(比如100个文档左右)。为此,我在搜索中添加了一个过滤器,可以正确限制搜索结果。然而,我发现这个搜索和整个索引搜索的性能几乎完全相同。这里有我遗漏的东西吗?感觉此搜索也在搜索整个索引。

向搜索添加筛选器不会限制索引的范围

你需要更清楚地知道你从搜索中需要什么,但我不相信你想要什么是可能的


文档的子集是否总是相同的?如果是这样的话,也许你可以聪明地使用多个索引。(例如,搜索较小的索引,如果没有足够的点击率,则搜索较大的索引)。

您可以尝试

您所说的“包含”搜索是什么意思?通配符查询?带有前导和尾随星号的通配符查询。文档子集是可变的。我认为理想情况下,我希望指定一个查询,首先缩小可能的结果集,然后在该结果集上运行第二个更昂贵的查询。听起来那是不可能的。很有趣。因此,这似乎是索引每个字符本身。然后运行搜索,对所有查询执行AND。这应该很快,因为它实际上是在使用索引,而不是扩展查询?@goalie7960最好的方法是试试看。我以前用它来查找URL的一部分,我对结果很满意。我在一个包含500万条记录的索引上运行了这个。搜索的字符越少,它的性能似乎越好。我认为它在创建的所有查询上花费了大量的时间进行AND操作。为了优化性能,您还可以对不同的字段使用不同的分析器。是的,这就是我所做的。似乎是为非常短的字段设计的。