ファイルを構成する必要があります。
solr/conf/schema.xml
標準エントリ:
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
に向ける必要があります:
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.NGramFilterFactory"
minGramSize="3"
maxGramSize="30"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>`
</fieldType>
Solr構成に関する非常に優れたリファレンスは、次の場所にあります。
http://techbot.me/2011/01/full-text-search-in-in-rails-with-sunspot-and-solr/
ただし、この参照に一致する部分的な単語に関してEdgeNGramFilterFactory
は、単語の先頭のみにインデックスを付けるものについて説明していることに注意してください。Solrを単語の任意の部分に一致させるには、NGramFilterFactory
を使用する必要があります。
とに設定minGramSize
していることにも注意してください。したがって、長さが3未満または30を超えるパターンは、クエリで返されません。3
maxGramSize
30