1

そのカテゴリ名を使用したテキスト検索を可能にするために、カテゴリ ID を Solr の名前にマップしようとしています。

私の計画は、synonyms.txt ファイルを使用して、MappingCharFilterFactory を使用して ID をそのカテゴリにマップするカスタム fieldType 仕様を使用することでした。マッピング後、残りは標準のトークナイザーと小文字フィルターです

これはインデックス作成で期待どおりに機能していますが (つまり、検索が機能しています)、結果には名前ではなく ID が含まれています。

私が間違っていることを誰かが知っていますか?または、同じ結果を達成するためのより良い方法がある場合は?

助けてくれてありがとう


フィールド定義

<field name="q_category_id" type="string" indexed="true" stored="true" multiValued="true" />
<field name="q_category_name" type="text_category" indexed="true" stored="true" multiValued="true" />
<copyField source="q_category_id" dest="q_category_name" />

フィールドタイプの定義

<fieldType name="text_category" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <charFilter class="solr.MappingCharFilterFactory" mapping="synonyms.txt"/>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <charFilter class="solr.MappingCharFilterFactory" mapping="synonyms.txt"/>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

シノニム.txt

...
"14" => "Music"
"16" => "Science"
"17" => "Sports & Games"
"18" => "Technology & Manufacturing"
...
4

1 に答える 1

2

Solr は、Response で返される実際の格納値を変更しません。インデックス値のみを更新します。
これが、インデックス付きの値で検索が機能する理由です。ただし、Solr から返される応答には、常に格納された値が含まれます。
Solr が Response でそれを返すようにするには、クライアント側で変更を処理する必要があります。

于 2012-12-21T11:03:44.250 に答える