前回は同義語の設定をしたので、今回はユーザ定義辞書を使ってみます。
まずは辞書も同義語も設定していない状態。
「形態素解析」という文字列を検索したのですが、
クエリー・インデックス共に「形態素」「解析」となってしまいましたね。
ではここから辞書の設定をしましょう。
schema.xmlのtext_jaのtokenizeの部分に「userDictionary="lang/userdict_ja.txt"」を追加します。
<fieldType name="text_ja" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="false"> <analyzer type="index"> <tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary="lang/userdict_ja.txt" /> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" tokenizerFactory="solr.JapaneseTokenizerFactory"/> ・・以下略・・ </analyzer> <analyzer type="query"> <tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary="lang/userdict_ja.txt" /> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" tokenizerFactory="solr.JapaneseTokenizerFactory"/> ・・以下略・・ </analyzer> </fieldType>
userdict_ja.txtに以下を追記する。
形態素解析,形態素解析,ケイタイソカイセキ,カスタム名詞
tomcatを再起動し、再度検索。
よし。「形態素」「解析」から、「形態素解析」になりました!
では、synonyms.txtに「kuromoji,形態素解析」を追加してみましょう。
同義語に対しての辞書ってどうなるのかな。kuromojiと検索すると「形態素解析」がヒットするはず。
!?
同義語に設定した「形態素解析」が「形態素」「解析」になってる!
つまり、同義語に対して辞書が効いてない!
「形態素」「解析」になってしまったせいで、「形態素解析」がヒットしなくなってしまいました。
これでは残念ですね。では、同義語に対しも辞書が有効になるようにします。
以下のように、「solr.SynonymFilterFactory」に対しても「userDictionary="lang/userdict_ja.txt"」を追加します。
<fieldType name="text_ja" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="false"> <analyzer type="index"> <tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary="lang/userdict_ja.txt" /> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" tokenizerFactory="solr.JapaneseTokenizerFactory" userDictionary="lang/userdict_ja.txt"/> ・・以下略・・ </analyzer> <analyzer type="query"> <tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary="lang/userdict_ja.txt" /> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" tokenizerFactory="solr.JapaneseTokenizerFactory" userDictionary="lang/userdict_ja.txt"/> ・・以下略・・ </analyzer> </fieldType>
では検索。
キターーー!!
同義語に対しても、同義語でない文字列に対しても、辞書が有効になりました!
では、「形態素」で検索したらどうなるのかな、と。
あ・・・ヒットしない。。これはよろしくないですね。
こういう場合に同義語辞書が活用できます。
synonyms.txtを以下のように修正します。
■修正前
kuromoji,形態素解析
■修正後
kuromoji,形態素,形態素解析
さて、これでどうか。
今度こそキターーー!!
これで同義語も辞書も心置きなく使えますね!
Apache Solr入門 ―オープンソース全文検索エンジン
- 作者: 関口宏司,三部靖夫,武田光平,中野猛,大谷純
- 出版社/メーカー: 技術評論社
- 発売日: 2010/02/20
- メディア: 大型本
- 購入: 15人 クリック: 477回
- この商品を含むブログ (20件) を見る