字符串文字的Solr排序 - PatternReplaceFilterFactory

时间:2011-10-03 10:14:20

标签: java regex sorting solr

Solr中以下特殊字符的正则表达式是什么。

,〜,!,@,Double Quotes,Single Quote,Brackets,?并为每个特殊字符。

我的代码是:

<fieldType name="Custom_sort" class="solr.TextField" sortMissingFirst="true" sortMissingLast="true" positionIncrementGap="100" autoGeneratePhraseQueries="true">
      <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory" />
        <filter class="solr.PatternReplaceFilterFactory" pattern="(#|!|[0-9]|'|~|^|&quot;|[)]|[(])" replacement=""  replace="all" />
      </analyzer>
    </fieldType>

但这不起作用。 如何为这些特殊字符编写模式。

1 个答案:

答案 0 :(得分:4)

除了处理下面的个别特殊字符外,还会删除除字母之外的所有特殊字符

<filter class="solr.PatternReplaceFilterFactory" pattern="([^a-z])" replacement="" replace="all" />

为什么在查询时应用分析器,因为您将其用作排序字段并需要在索引时应用分析?

<fieldType name="Custom_sort" class="solr.TextField" sortMissingFirst="true" sortMissingLast="true" positionIncrementGap="100" autoGeneratePhraseQueries="true">
  <analyzer type="index">
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory" />
    <filter class="solr.PatternReplaceFilterFactory" pattern="([^a-z])" replacement="" replace="all" />
  </analyzer>
</fieldType>