solr でシノニムを使用するのはこれが初めてであり、それについて読んで、それを使用する方法を理解しようとしました。シノニム ファクトリとその仕組みに関するドキュメントはたくさんありますが、開始方法についてはあまり見つかりませんでした。そのため、synonyms.txt ファイルを変更して使用を開始し、次のような行を追加しました。
mba => master business administration
デフォルトでシノニマイザーフィルターファクトリーを使用する text_en_splitting_tight としてフィールド「度」を定義しました。
「学位」で単語 mba を検索すると、入力が経営学修士号に変換され、インデックスのエントリと照合されることを期待していますが、これは起こりません。しかし、クエリセグメントのsolrのアナライザーページで試してみると、「度」と「text_en_splitting_tight」の両方に対して適切に変換されているようです。
- 私のphpアプリケーションの場合、入力が変換されているかどうかを確認するにはどうすればよいですか?
- ユーザーが入力した類義語を 1 つの標準的な単語に効果的に変換し、インデックス内のエントリに対して検索するにはどうすればよいですか?
- アナライザー (解析された入力) を通過した後にクエリ入力にアクセスできる方法はありますか? PHPクライアントとしてSolariumを使用しています。
質問があまりにもアマチュア的であってもかまいませんが、私はこれを解決する方法を見つけるのが本当に難しいと感じています. 重要な手順がいくつか抜けている場合は、遠慮なく批判してください。
編集: 以下の schema.xml の一部を追加する
<field name="candDegree" type="text_en_splitting_tight" indexed="true" stored="true" multiValued="true"/>
<field name="candStream" type="text_en_splitting_tight" indexed="true" stored="true" multiValued="true"/>
編集 2: フィールド型アナライザーは次のようになります。
<fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
<filter class="solr.ShingleFilterFactory" maxShingleSize="2" outputUnigrams="true"/>
<filter class="solr.EnglishMinimalStemFilterFactory"/>
<!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
possible with WordDelimiterFilter in conjuncton with stemming. -->
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
synonyms.txt は次のようになります。
mba => master business administration
mcom => master commerce
me,mtech,ms => master engineering
mit,mca => master information technology
ma => master humanities
bba,bbm => bachelor business administration
bcom => bachelor commerce
be,btech => bachelor engineering
bca,bit => bachelor information technology
ba => bachelor humanities