如果用户查询仅包含停用词,我希望Solr返回所有结果,例如q = the,(默认Solr返回0结果)。 Solr配置中是否有任何可以打开的标志, 或者我可以使用任何Solr查询语法构造来实现这个目标吗?
我真的不喜欢在客户端复制停用词逻辑的想法,如果所有术语都是停用词,则会触发q=*:*
。
答案 0 :(得分:1)
查看Edismax Query parser,如果查询包含所有停用词,则会处理不同的查询。
包括高级停用词处理:不需要停用词 查询的必需部分,但仍在附近使用 提升部分。如果查询包含所有停用词,例如"是或 不是",那么所有的话都是必需的
即使它不能作为所有(*:*
)结果查询,但肯定会匹配大多数结果。
答案 1 :(得分:0)
此问题的一个hacky解决方案是设置q=*:* AND _query_:"{! var=$userq}"
,并将用户查询发送到userq
网址参数而不是q
。
这显式地将结果设置为所有文档和用户查询的交集(如果您不熟悉_query_:"{!...}"
语法,请参阅http://wiki.apache.org/solr/LocalParams)。
请注意,与单独的用户查询相比,这将返回不同的分数,但顺序相同。