我在solr字段中有参考号,看起来像这样:
L2.816.4.53.2
42010N-0002
42010N/0002
现在我要搜索它,并获得一个匹配的字符串,同时也不要包含点/破折号/斜杠:
L28164532
42010N0002
42010N0002
我怎么用solr做到这一点?当前搜索ref:L28164532
不会返回结果,因为没有存储这样的值。
答案 0 :(得分:0)
您可以为您的字段尝试以下字段类型吗?
<fieldType name="text_wd" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<!-- Splits words based on whitespace characters -->
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<!-- splits words at delimiters based on different arguments -->
<filter class="solr.WordDelimiterGraphFilterFactory" preserveOriginal="1" catenateNumbers="1"/>
<!-- Transforms text to lower case -->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
此处WordDelimiterGraphFilterFactory
具有许多属性,使用这些属性将帮助您获得所需的结果。您可以详细了解WordDelimiterGraphFilterFactory
here
,例如catenateWords
或catenateAll
或catenateNumbers
。根据要求修改属性。修改后,可能需要重新启动服务器。您可以使用Solr管理员界面进行这些尝试和测试。