布尔表达式的Solr查询语法转换

布尔表达式的Solr查询语法转换,solr,lucene,Solr,Lucene,我正在尝试查询solr中的文档,给定一个具有以下字段名、数据类型无关的基本模式: 我正在尝试匹配至少符合以下条件之一的文档: 职业、姓名、年龄、性别但我想把它们放在一起 如何将多个术语组合在一起,并强制文档至少匹配一个术语 这似乎是失败的:+(姓名:莎拉年龄:24职业:医生性别:男性) 如何将布尔表达式转换为solr查询语法?我无法理解+和-的语法以及OR的默认运算符 我仍然不了解您的要求,但您只需要查询如下内容: +(age:24 OR gender:male) 或者,如果您希望同一字段中多

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

我正在尝试匹配至少符合以下条件之一的文档:
职业、姓名、年龄、性别
但我想把它们放在一起

如何将多个术语组合在一起,并强制文档至少匹配一个术语

这似乎是失败的:
+(姓名:莎拉年龄:24职业:医生性别:男性)


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

我仍然不了解您的要求,但您只需要查询如下内容:

+(age:24 OR gender:male)
或者,如果您希望同一字段中多个值的数据具有或类似条件。
i、 e.您可以同时获得
年龄:24
年龄:25
的数据

+(age:24 OR age:25 OR gender:male)
然后你可以:

+(age:(24 25) OR gender:male)

如果这不是您的要求,请告诉我。

如果您想让客户端尽可能简单,只需使用dismax[1]或eDiscoveryMax[2]查询解析器即可

具体来说,您可以配置一个名为“qf”的请求参数:

“qf参数引入一个字段列表,每个字段都分配了一个提升因子,以增加或减少该字段在查询中的重要性。例如,以下查询:

qf=fieldOne^2.3 fieldTwo fieldThree^0.4

为fieldOne指定2.3的增压,为FieldII保留默认增压(因为未指定增压系数),为fieldThree指定0.4的增压

这些促进因素使得fieldOne中的匹配比fieldTwo中的匹配重要得多,fieldTwo中的匹配又比fieldTwo中的匹配重要得多

然后,您只需传递一个自由文本查询,它将在您指定的字段中进行搜索,如果需要,每个字段的重要性也会有所不同

[1]


[2]

您需要什么样的数据?您是否希望相同字段(如
25的
age
24
age
age
24'或
gender`是
male
)有多个或多个值?@User4392892。男性或24岁(或两者兼有)