Sunspot (RailsでSolrによる検索を動かすGem)をとりあえず日本語検索に対応する方法
日本語で割と最近っぽい情報が全然なかったので簡単にメモ。
Solr: 6.6.0 / 7.0.0
Sunspot: 2.2.7
<RAILS_APP>/solr/configsets/sunspot/conf/schema.xml
の中で <fieldType name="text"
から始まって </fieldType>
で終わる部分を以下の内容に差し替える。
<fieldType name="text" class="solr.TextField" omitNorms="false" positionIncrementGap="100" autoGeneratePhraseQueries="false"> <analyzer> <tokenizer class="solr.JapaneseTokenizerFactory" mode="search"/> <filter class="solr.JapaneseBaseFormFilterFactory"/> <filter class="solr.JapanesePartOfSpeechStopFilterFactory" tags="lang/stoptags_ja.txt" /> <filter class="solr.CJKWidthFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ja.txt" /> <filter class="solr.JapaneseKatakanaStemFilterFactory" minimumLength="4"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType>
stopwords_ja.txt 及び stoptags_ja.txt は solrをapache.orgから solr-7.0.0-src.tgz
みたいなファイルをダウンロードしてきて 、その中にある solr-7.0.0/solr/core/src/test-files/solr/configsets/_default/conf/lang
のうち _ja.txt
で終わるファイルを <RAILS_DIR>/configsets/sunspot/conf/lang
の中に入れれば良いみたい。
面倒ならとりあえずそれが必要な行を削っても、それなりには動く。
これをベースにtokenizerにuserDictionaryとか入れればユーザ辞書を使った検索とかも出来るっぽい。
今あまり時間がなくて雑なメモになってますが、もしもう少し丁寧に知りたい人がいたらTwitterのメンションとか、ここへのコメントくれれば追記します。