solr - 如何忽略来自 solr 的刻面中的标记
问题描述
我在 Solr 6.41 中使用:
WordDelimiterFilterFactory
为了搜索包含点的字符串而不在查询中出现。
“00120123”(返回结果也是 001.20.123)
问题是,该字段还提供了一个分面,它现在显示标记而不是整个字段。
令牌在字段类型 text_wd 中生成:
<fieldType name="text_wd" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1" catenateAll="1" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="refnumber" type="text_wd" indexed="true" stored="true" required="false" />
包含标记的刻面:
001 (1324)
20 (909)
123 (480)
想要的面:
001.20.123
我怎样才能保持所需的功能,同时又没有刻面中的令牌?
解决方案
为您的构面使用单独的字段。Facets 使用底层标记结构来生成值,您必须将该字段保留为单个值才能获得所需的 facet 类型。
使用具有使用 StrField 类型的类型的单独字段,然后使用 copyField 指令将内容refnumber
也从该字段移动。
<field name="refnumber" type="text_wd" indexed="true" stored="true" required="false" />
<field name="refnumber_facet" type="string" indexed="true" stored="false" required="false" />
<copyField source="refnumber" dest="refnumber_facet" />
推荐阅读
- swift - 根据字符串的长度,每隔 N 个字符格式化一次字符串
- c# - C# 响应 = "WaitingForActivation"
- csv - python列表只打印到csv中的一行
- reactjs - 如何在 React Motion 上进行简单的淡入淡出?
- python-3.x - 给定输入和输出向量,哪个模型最适合预测未知数据?
- mysql - 为多个语言相关表创建视图,但语言只有一列
- c - Contiki 中是否有类似于 time.h 中的 clock_gettime() 的函数?
- javascript - 中间件返回错误 express-Validator 不是函数
- python - 使用 Keras 的 Python 代码在调用 model.fit 时崩溃,没有错误代码
- macos - Parallels - MacOS 主机和来宾 - 如何允许绕过某些快捷方式来主机操作系统