我对Solr很新,当我遇到查询解析器的概念,如basicLucene,dismax,edismac等时,我想知道它们之间的主要区别是什么?这是得分领域的方式吗?当我只想要一个简单的关键字(或布尔逻辑组合)搜索(可能涉及指定字段)时,我应该特别注意什么?
答案 0 :(得分:0)
我认为标准就足以进行简单的布尔操作和字段查询。如果您需要一些特殊功能,请查看其他功能,看看它们是否能更好地满足您的需求。
存在许多差异(允许的语法,功能,错误处理),但首先让我们说明解析器的作用:它将查询文本作为提交并将其转换为Lucene Query对象,Solr / Lucene组合可以理解和使用在搜索时。
Lucene解析器是默认解析器。它具有相当直观的语法,但缺乏力量。它适用于Solr推荐的运算符(+和 - )以及不推荐的布尔运算符(AND,OR,NOT)。
Dismax解析器针对简单的消费者应用:“更像谷歌”和“不那么严格”。它很少抛出错误(与标准错误相比),使用+和 - 来避免内部查询构建问题,它的名称源于最大Dysjunction:
生成由其生成的文档的并集的查询 子查询,并为每个文档评分最高分数 该文档由任何子查询生成,加上打破平局 任何其他匹配子查询的增量。
EDixMax是DisMax Extended - 增加了更多功能/功能。请参阅底部的链接以获取完整的功能列表,但它基本上允许使用完整的Lucene语法(标准Solr和DisMax解析器都没有)。
更多?当然!有很多解析器,一些是Lucene团队,一些是Solr团队,一些是其他人。请参阅下面的第三个链接以获取完整列表和一些信息。