目次
先日、Solr入門のサンプルschema.xmlの3.6.0対応版の作成をしていて、気になったことがあったので、 メモとして残しておきます。
SynonymFilterFactoryの属性「tokenizerFactory」に関連する話です。 (「Apache Solr入門」の36-37ページに記載があります。)
SynonymFilterFactoryでは、類義語設定ファイルを読み込む際に利用するTokenizerFactoryを「tokenizerFactory」という属性で指定できます。(以下は書籍の記述を抜粋)
<filter class="sold.SynonymFilterFactory" synonyms="synonyms.txt" ... tokenizerFactory="solrbook.analysis.SenTokenizerFactory"/>
このように、TokenizerFactoryが指定できます。
ただ、こちらの記事で書いたように、 Solr 3.6.0のexampleのschema.xmlではCJKのフィールドは次のように設定されています。
<!-- CJK bigram (see text_ja for a Japanese configuration using morphological analysis) -->
<fieldType name="text_cjk" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<!-- normalize width before bigram, as e.g. half-width dakuten combine -->
<filter class="solr.CJKWidthFilterFactory"/>
<!-- for any non-CJK -->
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.CJKBigramFilterFactory"/>
</analyzer>
</fieldType>
3.6.0以前は、solr.CJKTokenizerFactoryを利用していましたが、3.6.0からはCJKTokenizerFactoryがdeprecatedになってしまい、代わりにStandardTokenizerFactory+CJKBigramFilterFactoryの組み合わせになっています。 exampleのCJKのフィールドタイプ設定を利用して、かつ、そのフィールドにSynonymFilterを利用する場合に、 StandardTokenizerFactoryを指定してしまうと、類義語が展開できなくなってしまうので注意が必要です。
CJKのフィールドでSynonymFilterを利用する場合は、類義語の設定ファイル内の記述を自力でCJKTokenizerが分割する形で記述する(まぁ、やらないでしょうが)か、deprecatedですが、CJKTokenizerFactoryを利用するのが現時点での対応でしょうか。
なお、これに絡んで、このようなチケットもできています。
SyntaxHighlighterを導入してみました。
ちょっとはみやすくなってますかね?
まだ、SyntaxHighlighterの設定を調べながら使っているので、コロコロ変わるかもしれないですが、気にしないでください。
comments powered by Disqus
See Also by Hugo
- Solr4.3.0のChangesを訳してみた。(Jugemより移植)
- Partial UpdateとcopyFieldのバグ【Solr 4.0 ALPHA】(Jugemより移植)
- 「Apache Solr入門」のサンプルのKuromojiとlucene-gosen対応(2章~4章)(Jugemより移植)
- Solrの新しい管理画面(Solr4.x trunk系)(Jugemより移植)
- Solrへのプラグインの配置方法について