SOLR 6.6 eDisMax 查询不遵守 mm 参数



我使用的是 Solr 6.6.2,到目前为止,我们一直使用 DisMax 查询和mm参数,它的工作方式符合预期。一个小例子

defType=dismax&q=samsung+iphone&qf=name+brand&mm=1将按预期返回一个结果集,其中包含iPhone和三星产品。但是,当做完全相同的事情时,只需将defType替换到defType=edismax(保持mm=1)没有返回任何结果。我已经在Apache SOLR参考中阅读了eDisMax查询解析器的文档,它清楚地表明eDisMax是一个扩展,因此我希望mm在DisMax和eDisMax中的行为相同,如果您在同一页面上向下滚动,该文档还提供了mm参数的示例,该参数应该按我预期工作。 这是一个错误,还是我错过了一些非常明显的东西?喜欢这里的一些帮助

编辑 添加与请求一起发送的 solr 参数

易迪斯麦克斯

{
"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":[]
}}

最大

{
"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},...]
}}

不确定是否有其他人遇到这个问题,但我觉得它没有很好的记录。 我们的 Solrq.op默认为AND,因此像"foo bar car"这样的搜索词被搜索为foo AND bar AND cat.现在有了mm=2defType=dismax查询被丢失解析为到目前为止(foo AND bar AND cat)~2很好。

当我更改defType=edismax时,相同的查询"foo bar cat"并且mm=2被解析为(foo AND bar AND cat)注意缺少~2

现在,如果我继续添加q.op=OR有趣的事情开始发生。解析的查询现在看起来像(foo bar cat)~2这正是dismax所做的。所以你可以理解(foo bar cat)~2找到我至少 2 个这些术语。如果我删除mm参数,解析的查询看起来像(foo bar cat),并且由于q.op=OR它返回包含 3 个术语中的任何一个的任何文档。

无论哪种方式,这都无关紧要,可以实现相同的行为,只是令人困惑的是disMaxeDisMax之间的行为有些不一致。

希望这对其他人有所帮助。

相关内容

  • 没有找到相关文章

最新更新