Lucene 哪个更好:许多查询还是大量 OR 查询?
Lucene Which would be better: many queries or massive OR query?
问题我有一个很大的关键字列表,我想查看它们是否包含在一个或多个文档中。 (我的用户想知道文档何时发布,是否有任何已保存的关键字)
- 所以我可以提出很多问题;每个关键字一个。
- 或者我可以构造一个类似这样的查询:
"coffee OR tea OR milk OR sugar OR beer"
现在假设有 1,000 多个关键词。
- 哪一种可能会导致痛苦和折磨?
- 当 运行针对一个文档或多个文档时,一个会比另一个更好吗?
(我倾向于 OR 版本,但我担心如果我走得太远会达到一些查询长度(性能)限制)
一旦我有足够的数据,我将运行一些比较并报告回来。
不过,现在和之后的任何提示都会很棒。
Single Giant Query Pro:您可以通过 Lucene 的评分算法对所有关键字进行排名。
单一巨型查询缺点:您让 Lucene 使用大量内存,因为它需要记住每个子查询的结果(或部分结果)以便为您提供考虑所有关键字的良好排名。 OR 查询越大,Lucene 需要的内存越多,执行起来就越慢。
我想说,如果可能的话,请将其分解,因为 OR 查询是魔鬼(尽管有时有必要处理它们);但基准测试应该比随机询问人们的意见更好:P
问题我有一个很大的关键字列表,我想查看它们是否包含在一个或多个文档中。 (我的用户想知道文档何时发布,是否有任何已保存的关键字)
- 所以我可以提出很多问题;每个关键字一个。
- 或者我可以构造一个类似这样的查询:
"coffee OR tea OR milk OR sugar OR beer"
现在假设有 1,000 多个关键词。
- 哪一种可能会导致痛苦和折磨?
- 当 运行针对一个文档或多个文档时,一个会比另一个更好吗?
(我倾向于 OR 版本,但我担心如果我走得太远会达到一些查询长度(性能)限制)
一旦我有足够的数据,我将运行一些比较并报告回来。
不过,现在和之后的任何提示都会很棒。
Single Giant Query Pro:您可以通过 Lucene 的评分算法对所有关键字进行排名。
单一巨型查询缺点:您让 Lucene 使用大量内存,因为它需要记住每个子查询的结果(或部分结果)以便为您提供考虑所有关键字的良好排名。 OR 查询越大,Lucene 需要的内存越多,执行起来就越慢。
我想说,如果可能的话,请将其分解,因为 OR 查询是魔鬼(尽管有时有必要处理它们);但基准测试应该比随机询问人们的意见更好:P