2011-12-10 62 views
0

我在两个方面Solr的查询优先

方式1取得了Solr的查询:

状态= “已发送” 和主机名: “host.com” 和LOG_DATE:2011-12-08T00:00: 00Z TO 2011-12-08T23:59:59Z] 结果:328232

方式2:

主机名: “host.com” AND LOG_DATE:2011-12-08T00:00:00Z TO 2011- 12-08T23:59:59Z] AND status =“发送” 结果:62359

我通过原始数据集中的grep等进行验证,发现第二种查询方式2:给出了正确的计数。这是查询应该如何或者我有一个格式不正确的查询?

我的另一个问题是我只用索引进行索引和搜索,因此我有可能告诉solr不知何故不计算分数,并且在返回结果时不要担心分数?它会让事情变得更快吗?

+0

'status =“sent”'是一个无效的查询;它应该是'状态:发送' –

回答

0

我相信你应该考虑使用Solr Filter Queries来帮助限制你的结果。我不确定你的主要查询是什么以及可以作为过滤器查询传递什么,因为当前所有的搜索字段都只是给定字段值上的过滤器。所以,也许你会使用LOG_DATE作为主要的查询词如下做一个查询:

q=log_date:[2011-12-08T00:00:00Z TO 2011-12-08T23:59:59Z]&fq=status:"sent"&fq=hostname:"host.com" 

您可能需要按照上面的链接维基的指导,并结合部分或全部过滤查询值。

就得分问题而言,AKAIK总是通过Solr计算得分,因为它使用这个来返回并排列索引中的相关项目。所以我不认为有可能关掉它或者不计算分数来获得任何表现。如果您不需要更改fl参数,则不能指定分数作为字段返回。

+0

谢谢你的答复paige和mauricio,查询语法不正确,因为paige指示。 – user1082214