Solr全名搜索:如何查找包含带通配符的破折号的条目

詹尼斯

我正在使用solr 4.10.3。我试图将Solr配置为忽略搜索中的破折号:

<fieldtype name="text" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <!-- sonderzeichen .,-\/ ignorieren -->
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="[\.\-\\\/,]" replacement=""/>
    <!-- enthaelt u-umlaut -> u, lowercase und uft8 decomposed -->
    <tokenizer class="solr.ICUTokenizerFactory"/>
    <filter class="solr.ICUFoldingFilterFactory"/>
  </analyzer>
  <analyzer type="query">

    <!-- sonderzeichen .,-\/ ignorieren -->
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="[\.\-\\\/,]" replacement=""/>
    <!-- enthaelt u-umlaut -> u, lowercase und uft8 decomposed -->
    <tokenizer class="solr.ICUTokenizerFactory"/>
    <filter class="solr.ICUFoldingFilterFactory"/>
  </analyzer>
</fieldtype>

如果我搜索,我有一个条目“ pan-pan,peter”

(彼得·帕*)
(彼得·潘帕*)

甚至

(pe-te-r panpa *)

(彼得·帕恩·帕恩)

(无*)匹配项。

(彼得潘-p *)
(彼得潘\ -p *)

没有结果。

似乎破折号和*的组合有问题吗?

我想"pan-pan, peter"在打字的每个阶段找到"peter pan-pan"...

阿比吉特·巴什蒂(Abhijit Bashetti)

尝试使用以下字段类型。

<fieldType name="text_delimeter" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" preserveOriginal="1" catenateAll="1" splitOnCaseChange="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

我尝试了您的文字并进行了分析。我发现以上类型将为您工作。我也对该工具进行了同样的分析。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章