Solr:在索引前去除标点符号

标签 solr indexing punctuation filterfactory

我在从 solr 索引中剥离标点符号时遇到问题
当标点符号紧跟在一个词之后时,则该词未正确编入索引。

例如:如果我们索引“hello, John”,则不会通过关键字“hello”找到该 Assets ,而如果我们在单词“hello”之后删除逗号则没有问题。

是否有任何过滤器工厂可以去除标点符号?有任何想法吗?

谢谢,
博格丹。

最佳答案

您可以使用 solr.PatternReplaceFilterFactory用这个去掉开头和结尾的标点符号:

<filter class="solr.PatternReplaceFilterFactory"
    pattern="^\p{Punct}*(.*?)\p{Punct}*$"
    replacement="$1"/>

如果你想去掉开头和结尾的所有标点符号,除了(例如)单词前面的美元符号,你可以使用这个:
<filter class="solr.PatternReplaceFilterFactory"
    pattern="^[\p{Punct}&&[^$]]*(.*?)\p{Punct}*$"
    replacement="$1"/>

关于Solr:在索引前去除标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3149850/

相关文章:

java - 如何开始将 Apache solr 与 Java 结合使用并运行简单的查询而不会出错?

logging - 为 solr 日志屏幕配置级别

arrays - 需要根据单独数组的排序对4个不同的数组进行排序

mysql - 尽管存在索引,但复杂的 MySQL 查询仍在使用文件排序

javascript - 如何在包括标点符号和特殊字符的范围内包装字母?

javascript - 将 jquery.min.js 1.7.2 更改为较新版本 (1.11.2) 后,Ajax-Solr 无法正常工作

solr 自动完成多个字段中的关键字

ruby-on-rails - 依赖属性的动态索引(轮胎、 rails ) - ElasticSearch

java - 检查输入字符串是否包含标点符号字符串中的任何标点符号的有效方法

machine-learning - 是否应该从 Rasa NLU 训练数据中删除标点符号?