0

Solr では、"a$ap" だけでなく "asap" も検索できるように "a$ap" が必要です。これを実現するために、これを schema.xml のインデックス アナライザーとクエリ アナライザーに追加し、インデックスを再作成しました。

<filter class="solr.PatternReplaceFilterFactory" pattern="$" replacement="s"/>

ただし、「a$ap」は「a$ap」のみを返し、「asap」は「asap」のみを返します。それはおそらくばかげた構文ですが、何が間違っているのかわかりません!

4

2 に答える 2

1

$ は末尾を意味する正規表現の特殊文字であるため、エスケープする必要があります。

使用する :-

    <fieldType name="test" class="solr.TextField" sortMissingLast="true" omitNorms="true">
      <analyzer>
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory" />
        <filter class="solr.PatternReplaceFilterFactory" pattern="\$" replacement="s" replace="all" />
      </analyzer>
    </fieldType>

上記のフィールドはそれを完全に置き換えます。

于 2012-09-14T13:30:56.053 に答える
0

最後に、MappingCharFilterFactory で修正しました。

これをインデックス作成とクエリ アナライザーに追加しました。

<charFilter class="solr.MappingCharFilterFactory" mapping="mapping.txt"/>

mapping.txt は次のようになります。

"$" => "s"

インデックスを再作成した後、これでうまくいきました!

于 2012-09-18T08:18:35.083 に答える