我试图在solr中查询文档,给定一个具有以下字段名称的基本模式,数据类型无关紧要:
我尝试匹配至少与以下其中一项匹配的文档:
occupation, name, age, gender
但是我想要将它们组合在一起
你如何或多个术语在一起,并强制执行文档以匹配至少一个?
这似乎失败了:+(name:Sarah age:24 occupation:doctor gender:male)
如何将布尔表达式转换为solr查询语法?我无法找出+
和-
的语法以及OR的默认运算符。
答案 0 :(得分:1)
我仍然无法满足您的要求,但您只需查询:
+(age:24 OR gender:male)
或者,如果您希望在具有OR条件的相同字段中具有多个值的数据,例如。
即,您获得age:24
和age:25
的数据。
+(age:24 OR age:25 OR gender:male)
然后你可以:
+(age:(24 25) OR gender:male)
如果这是您的要求,请告诉我。
答案 1 :(得分:0)
如果您想让客户端尽可能简单,只需使用dismax [1]或edismax [2]查询解析器。
具体来说,您可以配置一个名为" qf"的请求参数。 :
" qf 参数引入了一个字段列表,每个字段都分配了一个提升因子,以增加或减少特定字段在查询中的重要性。例如,下面的查询:
qf = fieldOne ^ 2.3 fieldTwo fieldThree ^ 0.4
指定fieldOne增加2.3,将fieldTwo保留为默认增强(因为没有指定增强因子),而fieldThree增加0.4。
这些提升因素使fieldOne中的匹配比fieldTwo中的匹配更重要,而fieldTwo中的匹配比fieldThree中的匹配更重要。"来自维基
然后你可以传递一个自由文本查询,它将在你指定的字段中搜索,如果有必要,也会对每个字段进行不同的重要性。
[1] reindex_axis
[2] reset_index