我有一个电子商务网站,我在其中实现 Solr(使用 Solarium 库),并且有包含双引号(通常代表英寸)的产品名称和描述。在我开始掌握 Solr 的分析器和标记器部分之前,我只是将 text_en_splitting 的数据类型分配给将包含此数据的字段。如果有人搜索短语 - blue 1" binder- 双引号被删除,返回的前 10 个结果不一定是活页夹。返回的结果似乎与单词 blue 和数字 1 匹配(它们不是活页夹)。通过对 Solr admin 中的查询的分析,我看到双引号已从 WordDelimiterFilterFactory 中删除。我喜欢 WordDelimiterFilterFactory 的其他原因(比如处理短语便利贴)所以我试图在这里找到一个快乐的媒介。有没有更好的方法来索引和查询包含双引号的字段,这些双引号在执行搜索时应该保留在原位(因为它们实际上意味着什么)?
问问题
1817 次
2 回答
0
我最终做的是在单词分隔符之前添加一个替换过滤器并使用单词英寸。
<filter class="solr.PatternReplaceFilterFactory" pattern='(\d)"' replacement='$1 inch' replace="all"/>
于 2015-01-17T20:17:27.957 回答
0
Solr 查询解析器(例如 DisMax)使用调用
SolrPluginUtils.stripUnbalancedQuotes(userQuery))
删除不平衡的引号。平衡引号用于短语查询。
所以你真的应该设计你自己的查询解析器。
在查询到达 Solr 之前,您还可以考虑在前端将引号替换为英尺。
于 2016-03-09T23:54:58.987 回答