Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除标点符号';solr搜索中的s_Solr - Fatal编程技术网

删除标点符号';solr搜索中的s

删除标点符号';solr搜索中的s,solr,Solr,我是solr的新手,我有一个在solr中编制索引的文档,例如 { "foodType": "basicFood", "fulltext": [ "basicFood", "3.718625", "1 tbsp", "Butter, salted" ], "slims": "3.718625", "displayText": "1 tbsp", "displayName": "Butter, salt

我是solr的新手,我有一个在solr中编制索引的文档,例如

 {
    "foodType": "basicFood",
    "fulltext": [
      "basicFood",
      "3.718625",
      "1 tbsp",
      "Butter, salted"
    ],
    "slims": "3.718625",
    "displayText": "1 tbsp",
    "displayName": "Butter, salted"
  },

当我搜索黄油时,结果为空,但对于查询黄油效果良好,如何使其也适用于黄油?

为索引和查询阶段向分析器添加以下过滤器

<filter class="solr.PatternReplaceFilterFactory" pattern="([^A-Za-z0-9])" replacement="" replace="all"/>

更新

如果需要使用
WordDelimiterFilter
filter。请尝试以下配置:

<filter class="solr.WordDelimiterFilter" generateWordParts="1" catenateWords="1" splitOnCaseChange="0"  generateNumberParts="0" splitOnCaseChange="0"/>


这将在分隔符处拆分单词并再次连接它们。所有其他拆分都被禁用,如
数字字符串
驼峰大小写更改
和从字母到数字的转换。如果需要,您可以通过提供
非零值
打开

您可以提供查询url吗?这两个查询使用的是什么,问题不清楚?这不起作用。你能提供起作用的东西吗?在索引时数据的字段类型是什么?实际上,这种情况下合适的过滤器是WordDelimiterFilter,它提供了更多选项,专门设计用于处理标点符号和其他分隔符。在这里查看更多详细信息:是。您可以使用
WordDelimiterFilter
删除标点符号。但它会将令牌拆分为多个令牌,并提供连接它们的选项。这基本上是通过替换所有非字母数字字符来实现的。我建议,检查您的数据集并相应地使用。专门为角落的案件。
<filter class="solr.WordDelimiterFilter" generateWordParts="1" catenateWords="1" splitOnCaseChange="0"  generateNumberParts="0" splitOnCaseChange="0"/>