在solr搜索中删除标点符号
Remove punctuation's in solr search
我是 solr 的新手,我在 solr 中索引了一个文档,例如
{
"foodType": "basicFood",
"fulltext": [
"basicFood",
"3.718625",
"1 tbsp",
"Butter, salted"
],
"slims": "3.718625",
"displayText": "1 tbsp",
"displayName": "Butter, salted"
},
当我搜索 butter 时,结果为空,但它对查询 butter 效果很好,如何让它也对 butter 起作用?
将以下过滤器添加到您的索引和查询阶段的分析器。
<filter class="solr.PatternReplaceFilterFactory" pattern="([^A-Za-z0-9])" replacement="" replace="all"/>
这将替换令牌中除 a-z
、A-Z
和 0-9
之外的所有字母。要对此进行测试,您可能需要重新索引您的数据,因为您的索引数据将包含标点符号。或者您可以在 solr admin UI,分析部分尝试。
其他方法,在分析器阶段使用不同的分词器而不是 StandardTokenizerFactory
。您可以使用 LetterTokenizerFactory
创建由连续字母字符串组成的标记。任何非字母字符都将被丢弃。但这会创建许多您可能不想要的额外令牌。 请先检查再做。
Example: "I can't" ==> "I", "can", "t"
更新
如果需要使用WordDelimiterFilter
过滤器。尝试以下配置:
<filter class="solr.WordDelimiterFilter" generateWordParts="1" catenateWords="1" splitOnCaseChange="0" generateNumberParts="0" splitOnCaseChange="0"/>
这将在分隔符处拆分单词并再次将它们连接起来。所有其他拆分都是 turned off
,例如 numeric strings
、camel-case change
和 transitions from alpha to numeric
。如果需要,您可以通过提供 non-zero
值来 turn on
。
我是 solr 的新手,我在 solr 中索引了一个文档,例如
{
"foodType": "basicFood",
"fulltext": [
"basicFood",
"3.718625",
"1 tbsp",
"Butter, salted"
],
"slims": "3.718625",
"displayText": "1 tbsp",
"displayName": "Butter, salted"
},
当我搜索 butter 时,结果为空,但它对查询 butter 效果很好,如何让它也对 butter 起作用?
将以下过滤器添加到您的索引和查询阶段的分析器。
<filter class="solr.PatternReplaceFilterFactory" pattern="([^A-Za-z0-9])" replacement="" replace="all"/>
这将替换令牌中除 a-z
、A-Z
和 0-9
之外的所有字母。要对此进行测试,您可能需要重新索引您的数据,因为您的索引数据将包含标点符号。或者您可以在 solr admin UI,分析部分尝试。
其他方法,在分析器阶段使用不同的分词器而不是 StandardTokenizerFactory
。您可以使用 LetterTokenizerFactory
创建由连续字母字符串组成的标记。任何非字母字符都将被丢弃。但这会创建许多您可能不想要的额外令牌。 请先检查再做。
Example: "I can't" ==> "I", "can", "t"
更新
如果需要使用WordDelimiterFilter
过滤器。尝试以下配置:
<filter class="solr.WordDelimiterFilter" generateWordParts="1" catenateWords="1" splitOnCaseChange="0" generateNumberParts="0" splitOnCaseChange="0"/>
这将在分隔符处拆分单词并再次将它们连接起来。所有其他拆分都是 turned off
,例如 numeric strings
、camel-case change
和 transitions from alpha to numeric
。如果需要,您可以通过提供 non-zero
值来 turn on
。