9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?