如果用户查询只包含停用词,是否可以从Solr返回所有结果?

时间:2012-11-13 22:42:00

标签: solr stop-words solr-query-syntax

如果用户查询仅包含停用词,我希望Solr返回所有结果,例如q = the,(默认Solr返回0结果)。 Solr配置中是否有任何可以打开的标志, 或者我可以使用任何Solr查询语法构造来实现这个目标吗?

我真的不喜欢在客户端复制停用词逻辑的想法,如果所有术语都是停用词,则会触发q=*:*

2 个答案:

答案 0 :(得分:1)

查看Edismax Query parser,如果查询包含所有停用词,则会处理不同的查询。

  

包括高级停用词处理:不需要停用词   查询的必需部分,但仍在附近使用   提升部分。如果查询包含所有停用词,例如"是或   不是",那么所有的话都是必需的

即使它不能作为所有(*:*)结果查询,但肯定会匹配大多数结果。

答案 1 :(得分:0)

此问题的一个hacky解决方案是设置q=*:* AND _query_:"{! var=$userq}",并将用户查询发送到userq网址参数而不是q

这显式地将结果设置为所有文档和用户查询的交集(如果您不熟悉_query_:"{!...}"语法,请参阅http://wiki.apache.org/solr/LocalParams)。

请注意,与单独的用户查询相比,这将返回不同的分数,但顺序相同。