2011-12-28 74 views
2

在solr中建立查询是否存在正确/错误的方法?假设我有两个索引字段,x和y。和一个像+x:123 +y:abc这样的查询。表达的顺序是否重要(就表现而言)?例如,如果其中一个表达式产生的文档集小于另一个,这是否会影响查询性能?building solr查询

+0

您是否从RDBMS连接优化问题中获得灵感?例如:可以连接**(1)**将一个表中的10000行连接到另一个表中的5行或**(2)**将一个表中的5行连接到另一个表中的10000行。 您可能需要仔细查看[索引数据结构](http://en.wikipedia.org/wiki/Inverted_index)和[评分算法](http://en.wikipedia.org/wiki/Vector_space_model)上的查询)lucene实现它的方式。 – aitchnyu 2011-12-28 07:58:58

+0

我其实并没有意识到存在RDBMS连接优化问题。我只是想知道构建查询的方式是否会影响性能。 – Kevin 2011-12-30 19:08:22

回答

0

我想如果在文本搜索参数中使用“+ x:123 + y:abc”,那么顺序没有区别。当你知道何时使用fq(过滤器查询)与q并调整缓存/提交时,性能上的巨大好处是。

FQ是最适合与价值有限列表非“文本搜索”领域(如制造商,型号,类型,类别,颜色)

q将是“文本搜索”,所以寻找“网络开发者rockstar“vs”rockstar developer web“将会返回相同的结果。

+0

我用fq得到了很好的加速,谢谢。 – Kevin 2012-01-03 21:43:01

+0

将fq用于经常请求的查询子集,q用于相当“自定义”且经常更改的查询子集。两者都使用可以调整的不同缓存配置。当缓存的fq被一遍又一遍地重复请求时,fq缓存显然是最支持的,而不是只缓存一次,并且再也不要求。增加q缓存可能会产生反作用,因为太多的永远不会再请求q组保持并减慢solr。 http://lucidworks.com/blog/advanced-filter-caching-in-solr/ – Risadinha 2015-05-12 09:04:21