2012-04-03 20 views
4

クエリ時間にシノニムフィルタリングを実行しようとしているので、Xを検索するとYの結果も表示されます。SolrでSynonymFilterFactoryを使用するには?

私はSolrが実行されている場所に移動し、.txtファイルを編集してX、Yを新しい行に追加します。

これは機能しません。私はスキーマをチェックし、私は参照してください:

<analyzer type="query"> 
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" /> 

私は何が欠けていますか?

EDIT コンフィギュレーションファイルを評価

tomcat6 /カタリナ/ localhostののSolr adminに私はこれを見、また

<Context docBase="/data/solr/solr.war" debug="0" privileged="true" allowLinking="true" crossContext="true"> 
    <Environment name="solr/home" type="java.lang.String" value="/data/solr" override="true" /> 
</Context> 

正しい場所を指すようです。 cwdは何を意味しますか?

cwd=/usr/share/tomcat6 SolrHome=/data/solr/ 

答えて

2

SynonymFilterFactoryは、クエリ時ではなくインデックス時にのみ使用してください。クエリ時には、シノニムに関する微妙ではあるが十分に理解されている問題があります。

参照:http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.SynonymFilterFactory

索引アナライザ・チェーンに同義語を移動した後、彼らは、管理UIでの分析ページで作業していることを確認してください。

+0

これは、同義語を確立した後、インデックスを削除して再インデックスする必要があることを意味しますか? – AlxVallejo

+0

短くて甘い:はい:) –

+0

分析ページが自分のスキーマを読んでいないようです。 SynonymFilterFactoryは依然として「クエリ」に対して表示されており、「synonyms.txt」を参照しています。 Schemaページで "synonyms.txt"を探して一致するものが見つからなかったので、なぜsynonyms.txtを読み込んでいるのかわかりません。 – AlxVallejo

0

@Walter Underwoodの回答は良いですが、不完全です。

インデックスまたはクエリ時にSynonymFilterFactoryを使用するかどうかは、depends on your default operatorです。

それでは、私たちは、このエントリと同義語ファイルを持っているとしましょう:

5,five 

デフォルトのオペレータは、(デフォルトのデフォルトのオペレータがある)ORある場合は、クエリにあなたの同義語を設定する必要がありますフィルター。このようにして、 "5"のクエリは "5"または "5"のクエリとしてバックエンドに渡され、バックエンドは適切に応答します。同時に、索引を再作成せずにシノニム・ファイルを変更することができ、索引の数がそれほど多くなくて済むので索引が小さくなります。

ただし、デフォルトの演算子をANDに変更する場合は、代わりにインデックスフィルタに同義語を設定する必要があります。そうでない場合、 "5"のクエリは "5"と "5"というバックエンドに行き、予想されるドキュメントと一致しません。これは、悲しいことに、インデックスを大きくし、新しいシノニムが完全な再インデックスを必要とすることを意味します。

注:現在のところ、は間違っており、これらの詳細はすべて省略されています。

関連する問題