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

Solr full name search: how can I find entries containing a dash with wildcards

我正在使用 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",如果我搜索

(peter pa*)
(peter panpa*)

甚至

(pe-te-r panpa*)

还有

(peter pa-n-pa-n)

(不带*)匹配。

但是

(peter pan-p*)
(peter pan\-p*)

没有结果。

dash 和 * 的组合好像有问题?

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

尝试使用以下字段类型。

<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>

我试过你的文字并进行了分析。我发现上面的类型适合你。我在工具里也分析过了。