【发布时间】:2018-06-22 09:24:56
【问题描述】:
我使用的是 Solr 6.6.2,到目前为止,我们一直在使用 DisMax 查询以及 mm 参数,它的工作方式与预期一样。一个小例子
defType=dismax&q=samsung+iphone&qf=name+brand&mm=1 将按预期返回一个结果集,其中包含 iPhone 和三星产品。 然而当做完全相同的事情时,只需将defType 替换为defType=edismax(保留mm=1)没有返回结果。我已经在Apache SOLR reference 阅读了 eDisMax 查询解析器的文档,它清楚地表明 eDisMax 是一个扩展,所以我希望 mm 在 DisMax 和 eDisMax 中的行为相同,如果您在同一页面上向下滚动,文档还提供了 mm 参数的示例,该参数应该可以按我的预期工作。
这是一个错误,还是我错过了一些非常明显的东西?喜欢这里的帮助
编辑添加随请求一起发送的 solr 参数
eDisMax
{
"responseHeader":{
"zkConnected":true,
"status":0,
"QTime":0,
"params":{
"mm":"1",
"q":"samsung iphone",
"defType":"edismax",
"indent":"on",
"fl":"name, category_names, score",
"fq":"channel:outbound",
"wt":"json",
"_":"1515855895772"}},
"response":{"numFound":0,"start":0,"maxScore":0,"docs":[]
}}
DisMax
{
"responseHeader":{
"zkConnected":true,
"status":0,
"QTime":22,
"params":{
"mm":"1",
"q":"samsung iphone",
"defType":"dismax",
"indent":"on",
"fl":"name, category_names, score",
"fq":"channel:outbound",
"wt":"json",
"_":"1515855895772"}},
"response":{"numFound":2147,"start":0,"maxScore":12.172616,"docs":[
{
"name":"Apple iPhone 5s",
"score":12.172616},...]
}}
【问题讨论】:
-
这是您的实际查询吗? edismax 在
q字段中支持不同的语法——它直接支持Lucene 语法以及dismax 语法。 -
@MatsLindh 这是我的确切查询。我知道我可以在 q 参数中传递 Lucene 语法查询,这确实有效,例如:如果我执行 q=apple+OR+samsung 之类的操作,则结果与预期一致,即联合。但我希望 mm 参数能够像在 dismax 查询中那样工作,即使用 mm=1 时,解析器应该生成类似于 OR 的东西。
-
q.op是否设置在任何地方? IE。在您的请求处理程序或类似的东西中? -
@MatsLindh,没有。 :( 我可以编辑答案以提供所有传递的 solr 参数
-
@MatsLindh 在问题中添加了更多信息。希望它可以帮助您为我指明正确的方向。另外,我的 solr 是否需要一些“特殊”配置才能与 eDisMax 一起使用?由于它与 DisMax 的工作原理一样,因此我没有进行任何配置更改
标签: search solr lucene information-retrieval edismax