LoginSignup
9
7

More than 5 years have passed since last update.

Railsのsunspotで日本語関連設定いろいろ

Posted at

環境

  • solr v4.2.0
  • sunspot 2.1.0
  • sunspot_rails 2.1.0
  • sunspot_solr 2.1.0

設定

solr/conf/schema.xml
    <fieldType name="text" class="solr.TextField" omitNorms="false">
      <analyzer type="query">
        <tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary="lang/userdict_ja.txt"/>
        <filter class="solr.JapaneseBaseFormFilterFactory"/>
        <filter class="solr.JapanesePartOfSpeechStopFilterFactory" tags="lang/stoptags_ja.txt" enablePositionIncrements="true" />
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ja.txt" enablePositionIncrements="true" />
        <filter class="solr.CJKWidthFilterFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms_q.txt" ignoreCase="true" expand="true" />
        <filter class="solr.JapaneseKatakanaStemFilterFactory" minimumLength="4"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="index">
        <tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary="lang/userdict_ja.txt"/>
        <filter class="solr.JapaneseBaseFormFilterFactory"/>
        <filter class="solr.JapanesePartOfSpeechStopFilterFactory" tags="lang/stoptags_ja.txt" enablePositionIncrements="true" />
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ja.txt" enablePositionIncrements="true" />
        <filter class="solr.CJKWidthFilterFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
        <filter class="solr.JapaneseKatakanaStemFilterFactory" minimumLength="4"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>

queryとindex

検索時とインデックス作成時で設定を分ける

<analyzer type="query">
</analyzer>
<analyzer type="index">
</analyzer>

solr.JapaneseTokenizerFactory

  • Kuromojiを使った形態素解析
  • userDictionaryはユーザー辞書を使いたい場合に設定

solr.JapaneseBaseFormFilterFactory

  • 動詞などを基本形に変換する

solr.JapanesePartOfSpeechStopFilterFactory

  • 接続詞とか副詞とか必要なさそうなのを除外
  • 除外する内容はtagsで指定したtxtファイルに

solr.StopFilterFactory

  • 「する」「から」「なら」「のみ」とか必要ないものインデックスから除外
  • 除外する内容はtagsで指定したtxtファイルに

solr.CJKWidthFilterFactory

  • 全角のローマ字を半角にしたり半角カナを全角にしたり

solr.SynonymFilterFactory

  • 同義語の設定。タマゴと検索したら卵もたまごもタマゴも玉子も検索できるように
  • 内容はsynonymsで指定したtxtファイルに

solr.JapaneseKatakanaStemFilterFactory

  • カタカナのみの文字列の最後の長音(ー)を除去
  • minimumLengthは文字数。4なら4文字以上のカタカナ

solr.LowerCaseFilterFactory

-アルファベットを小文字

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7