2

有什么区别(特别是在性能方面):

  1. 使用一个*:*查询和 2 个过滤查询

例子: http://127.0.0.1:8080/solr/select?q=*:*fl=id&fq=lat:[42.2823890429 TO 42.4224427748] AND lng:[-71.3345718384 TO -70.7612228394]

  1. 使用 1 个查询和 1 个过滤查询

例子: http://127.0.0.1:8080/solr/select?q=lat:[42.2823890429 TO 42.4224427748]&fl=id&fq=lng:[-71.3345718384 TO -70.7612228394]

结果将根据时间戳进行排序,为简单起见,上述示例查询中未包含该时间戳。对于一个预计会增长的小数据集,我分别获得了 37 和 32 的查询时间。

4

1 回答 1

4

这完全是关于 lucene 过滤器和查询之间的区别。过滤器是可缓存的,因此速度更快。此外,过滤器不会影响文档的分数。通常,查询是用户在全文搜索框中键入的查询,而所有其他优化搜索的方法几乎都是预先定义的并用作过滤器。经验法则是:尽可能使用过滤器!

于 2012-09-29T15:04:15.510 回答