我使用edismax查询解析器来处理针对Solr 4.10.3服务器的用户查询。
我将q.op参数配置为AND并完全禁用mm参数,以便仅达到 100% 匹配。
当用户在单个字段中搜索多个术语时,一切正常。
例如,查询food:(beer cola Pizza)仅返回那些在food字段中包含所有术语beer、cola和Pizza的文档,这是预期的行为。
但是当用户在多个字段中搜索时,Solr 似乎忘记了q.op配置并且表现得好像参数设置为OR。
例如,查询food:(beer cola Pizza) AND color:(green yellow blue)返回所有那些在字段food中包含术语beer、cola 或 Pizza之一的文档以及包含术语green、yellow OR之一的文档字段颜色为蓝色,这不是预期的行为。
一种解决方法是使用+ 运算符明确地准备每个术语,如下所示:food:(+beer +cola +pizza) AND color:(+green +yellow +blue)。
但是我需要在我们的 java-webapplication 中添加这个运算符,这是一种“硬代码”功能。当用户决定将q.op运算符配置回OR时,我认为硬编码+会导致问题。
有没有办法通过配置达到预期的搜索结果?