我的架构中有一个字段' fullText'这是&text;'' text_en'类型和多值。术语'测试'在一个文档的fullText字段中。
在solr中,当我尝试使用单词' test'进行搜索时,使用标准的lucene解析器,距离为1,它返回文档。我正在使用的查询是:
http://localhost:8983/solr/simple/select?q=fullText:test~1&wt=xml&indent=true
但是我使用dismax做同样的事情,而且它没有返回文档。我尝试的查询是:
http://localhost:8983/solr/simple/select?q=test&wt=xml&indent=true&defType=dismax&qf=fullText~1
http://localhost:8983/solr/simple/select?q=test~1&wt=xml&indent=true&defType=dismax&qf=fullText
答案 0 :(得分:2)
根据设计,DisMax不支持查询参数中的所有lucene查询语法。来自the documentation:
此查询解析器支持Lucene QueryParser语法的极简化子集。引号可用于对短语进行分组,+ / - 可用于表示强制和可选子句......但所有其他Lucene查询解析器特殊字符都被转义以简化用户体验。
模糊查询是不受支持的事情之一。有一个request to add it to the qf
parameter,如果你想看看,但它还没有实现。
一个好的解决方案是转到edismax
query parser。它的查询参数支持完整的lucene查询解析器语法:
http://localhost:8983/solr/simple/select?q=test~1&defType=edismax&qf=fullText