如何从 solr 文本字段中排除数字?

How to exclude numbers from a solr text field?

我正在尝试从文档中获取一些数据,我正在使用 facet 来获取一组文档的所有单词及其出现次数。 问题是我得到了很多我不想要的结果。 我的字段是我的数据库提供的巨大字符串,最初它是存储在该数据库中的二进制文件。

如果可能,我想在我的请求中过滤掉这些号码。

<!-- text_fr with hunspell -->
  <fieldType name="text_fr_token" class="solr.TextField" positionIncrementGap="100">
   <!-- index analyser -->
    <analyzer type="index">
      <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <!-- removes l', etc -->
      <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="contractions.txt"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      <!-- voir  si a supprimer  -->
      <filter class="solr.WordDelimiterGraphFilterFactory"
            generateWordParts="1"
            generateNumberParts="1"
            catenateWords="1"
            catenateNumbers="1"
            catenateAll="1"
            splitOnCaseChange="1"
            splitOnNumerics="1"/>
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" format="snowball" />
      <filter class="solr.HunspellStemFilterFactory"
        dictionary="fr_FR.dic"
        affix="fr_FR.aff"
        ignoreCase="true"
        strictAffixParsing="true"/>
    </analyzer>
 <!--Query analyser-->
    <analyzer type="query">
      <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <!-- removes l', etc -->
      <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="contractions.txt"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      <!-- voir  si a supprimer  -->
      <filter class="solr.WordDelimiterGraphFilterFactory"
            generateWordParts="1"
            generateNumberParts="0"
            catenateWords="1"
            catenateNumbers="1"
            catenateAll="1"
            splitOnCaseChange="1"
            splitOnNumerics="1"/>
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" format="snowball" />
      <filter class="solr.HunspellStemFilterFactory"
        dictionary="fr_FR.dic"
        affix="fr_FR.aff"
        ignoreCase="true"
        strictAffixParsing="true"/>
    </analyzer>
  </fieldType>

我不清楚你是想从标记中删除数字,还是删除数字标记。

要从标记中删除数字,您可以尝试将 PatternReplaceFilterFactory 添加到使用正则表达式删除数字的索引分析器部分。

<filter class="solr.PatternReplaceFilterFactory" pattern="(\d+)" replacement="" replace="all" />

要删除数字标记,您可以使用此处文档中所述的正则表达式标记器之一:https://lucene.apache.org/solr/guide/6_6/tokenizers.html#Tokenizers-RegularExpressionPatternTokenizer