从solr搜索结果中排除替换字符

时间:2018-03-09 13:24:38

标签: solr full-text-search dspace

在运行dspace filter-media后在我的dspace服务器中搜索时,我看到了很多替换字符。我如何忽略它们,或者用空字符串替换它们?

我的第一个想法是做以下事情:

    <fieldType name="title" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
            <tokenizer class="solr.KeywordTokenizerFactory"/>
            <filter class="solr.PatternReplaceFilterFactory" pattern="�" replacement=""/>
            <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.KeywordTokenizerFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
    </fieldType>

但这仍然显示替换角色&#34;�&#34;在搜索结果中。

1 个答案:

答案 0 :(得分:0)

您发布的分析器仅在索引时执行替换工作,因此对于与该类型关联的每个字段,索引的每个文档都意味着要进行替换。

如果你的意思是你仍然看到来自Solr的一些记录,那些字符意味着链可能不起作用(例如过滤器中的正则表达式没有捕获/替换正确的字符)

我对你的问题有些怀疑,因为最后你说:

  

但我意识到这用于过滤搜索查询,而我需要过滤掉结果。

  • 替换过滤器用于索引时,查询时间
  • 分析器(索引或查询)不应该过滤我们的结果,它不是它的角色。分析器处理(索引时间)要编制索引的文档,以及(查询时间)传入的查询字符串。

“过滤结果”是在查询时使用过滤器完成的。如果(试图解释您的疑问)您希望那些包含这些字符的文档被排除在索引阶段之外,那么您可以

  • 在客户端工作(避免将其发送给Solr)
  • 编写 UpdateRequestProcessor 进行那种过滤