dismax和EdisMax有什么区别?

时间:2012-11-28 09:32:23

标签: solr edismax dismax

我想知道DisMax和EDisMax有什么区别..? 是否有任何有用的参考资料来了解这一点。另外,我想知道DisMax无法生成EDisMax能够产生结果的结果是什么??

EDisMax有一些Query参数,如boost参数,ps参数,pf2参数;但除此查询参数外, EDisMax如何优于DisMax ;如何在这两个 之间处理 查询。。 因素使得EDisMax比DisMax 更好。

有些查询无法在DisMax中提供结果,但EDisMax会为这些查询提供结果。

我用Google搜索了DisMax和EDisMax之间的区别。我发现,EDisMax中使用的参数只是DisMax和EDisMax之间的区别;但是我期待在技术上向他人介绍一些东西。

http://ip:8983/solr/C73/select/?defType=edismax&q=ipod OR video& fl = filename,score& hl = true& hl.fl = content contentenstem filename& hl.zetaContentField = content

上面查询的

EDisMax产生大约238个结果;但DisMax产生0结果。 那么这两个解析器处理这个查询之间的区别是什么;是什么让EDisMax产生result.Thats我想知道的......

2 个答案:

答案 0 :(得分:24)

由于Dismax有很多限制,因此添加了EDismax查询解析器。

查看SOLR-1553

首先(如文档中所述): -

扩展的dismax解析器基于原始的Solr dismax解析器。

  • 在没有语法错误的情况下支持完整的lucene查询语法
  • 在lucene语法模式中支持“和”/“或”表示“AND”/“或”
  • 当存在语法错误时,会对特殊字符进行改进的智能部分转义以防止它们...在此模式下,仍然支持现场查询,+ / - 和短语查询。
  • 通过单词双字母改进邻近提升...这可以防止需要文档中100%的单词获得任何提升的问题,以及将所有单词放在单个字段中。
  • 高级禁用词处理...在查询的强制部分中不需要停用词,但仍在邻近提升部分中使用(如果已编入索引)。如果查询包含所有停用词(例如是或不是),那么将需要所有停用词。
  • 支持“boost”参数..就像dismax bf param一样,但是将函数查询相乘而不是将其添加到
  • 支持纯负面嵌套查询...所以像+ foo(-foo)这样的查询将匹配所有文档

然而,正如您所做的许多相关JIRA一样,它可以提高查询解析能力并支持更多功能。

通过JIRA阅读可以非常有见地:)

答案 1 :(得分:3)

通常,EDisMax是DisMax的扩展版本。您可以在以下链接中找到两个解析器的良好描述和差异。

  1. DisMax Query Parser
  2. Extended DisMax Query Parser