如何从 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。
我正在尝试从文档中获取一些数据,我正在使用 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。