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