从布尔表达式

时间:2017-06-22 19:54:17

标签: solr lucene

我试图在solr中查询文档,给定一个具有以下字段名称的基本模式,数据类型无关紧要:

我尝试匹配至少与以下其中一项匹配的文档: occupation, name, age, gender但是我想要将它们组合在一起

你如何或多个术语在一起,并强制执行文档以匹配至少一个?

这似乎失败了:+(name:Sarah age:24 occupation:doctor gender:male)

如何将布尔表达式转换为solr查询语法?我无法找出+-的语法以及OR的默认运算符。

2 个答案:

答案 0 :(得分:1)

我仍然无法满足您的要求,但您只需查询:

+(age:24 OR gender:male)

或者,如果您希望在具有OR条件的相同字段中具有多个值的数据,例如。
即,您获得age:24age: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