我想知道DisMax和EDisMax..之间的区别是什么。。?有什么有用的参考资料可以了解吗。?此外,我想知道DisMax未能产生结果的查询是什么,而EDisMax能够产生结果。。?
EDisMax有一些查询参数,如boost参数、ps参数、pf2参数;但除了这个查询参数,EDisMax如何优于DisMax;查询是如何在这两个之间处理的。是什么因素使EDisMax比DisMax做得更好。。
某些查询无法在DisMax中给出结果,但EDisMax会给出这些查询的结果。
我在谷歌上搜索了DisMax和EDisMax之间的区别。我发现,在EDisMax中使用的参数只是DisMax和EDisMax之间的区别;但我希望在演讲中有一些技术性的东西可以向其他人解释。
http://ip:8983/solr/C73/select/?defType=edismax&q=ipod或视频&fl=文件名,分数&hl=真&hl.fl=content-contentenstem filename&hl.zetaContentField=内容
对于上述查询,EDisMax产生大约238个结果;但是DisMax产生0结果。那么,这两个解析器处理这个查询有什么区别呢;EDisMax产生结果的原因。这就是我想知道的
由于Dismax有很多限制,因此添加了EDismax查询解析器。
查看SOLR-1553
首先(如文档中所示):-
扩展的dismax解析器是基于原来的Solr dismax解析器。
- 在没有语法错误的情况下支持完整的lucene查询语法
- 支持"and"/"or"在lucene语法模式中表示"and"/"or">
- 当出现语法错误时,会对特殊字符进行改进的智能部分转义,以防止它们。。。在这种模式下,仍然支持字段查询、+/-和短语查询
- 通过单词bigram改进了接近度提升。。。这就避免了需要文档中100%的单词才能得到任何提升,以及将所有单词都放在一个字段中的问题
- 高级停止字处理。。。在查询的强制部分中不需要停止词,但在邻近度提升部分中仍然使用(如果索引的话)。如果一个查询包含所有的停止语(例如to be或not to be),那么所有的都是必需的
- 支持"boost"参数。。类似于dismax-bf-param,但将函数查询相乘,而不是将其添加到
- 支持纯负嵌套查询。。。因此像+foo(-foo)这样的查询将匹配所有文档
但是,正如您将使用许多相关的JIRA来提高查询解析能力和对更多功能的支持一样。
阅读JIRA可能真的很有见地:)
一般来说,EDisMax是DisMax的扩展版本。您可以在以下链接中找到这两个解析器的良好描述和差异。
- DisMax查询解析器
- 扩展的DisMax查询分析器