Railsの検索機能を早くするのにSolrを組み合わせるケースが多いようで、その際はsunspotでRailsとSolrをつなぐと思います。そのときのやり方
schema.xmlとsolrconfig.xmlの生成
インデックスの生成方法などを決めるschema.xmlとsolrconfig.xmlが鍵となります。
下記のissueにあるように、sunspot_solrでsolr 5.x系に対応するものを生成させます。
gem install sunspot_solr
bundle exec rake sunspot:solr:run
これで、gemのインストール先のsunspot_solrのディレクトリの下に、sunspotに対応したschema.xmlとsolrconfig.xmlなどのconfigのディレクトリができます。これをもとにします。
solrのコア作成
${SOLR_HOME}/bin/solrでコアを作成します。オプションで設定ファイルのディレクトリを指定できるので、前述で作ったものを使います。
${SOLR_HOME}/bin/solr create -c core -d configsets
インデックスの作成
どういう検索するかによって、インデックスの作り方を決めます。
sunspot_solrでつくったものは、StandardTokenizerというもので、スペースや改行など、一般的に単語の区切りとされるもので、トークンをつくっていくものです。特に拘りがなければこれからはじめるのがよいでしょう。
区切りのルールの詳細は下記を。
http://unicode.org/reports/tr29/#Word_Boundaries
とにかく部分一致
いわゆるbigramの設定をすると、手っ取り早く部分一致が実現できます。そのかわり検索ノイズもでます。問答無用で2文字区切りでトークンをつくるので、wildcardをつかったクエリがあまり意味がなくなってしまいます。
前方一致と後方一致
NGramを前方・後方からやるEdge NGramを使います。
形態素解析
日本語の標準のも用意されているようです。
https://cwiki.apache.org/confluence/display/solr/Language+Analysis#LanguageAnalysis-Japanese
インデックスとクエリ
インデックスのときに、どう分割するかを決めるように、入力された検索語の分割の仕方も指定できます。インデックスとクエリを同じルールにも、違うようにも設定できます。さらに、フィールドごとにも設定できるようです。
まとめ
SQLでできるレベルの検索しかしないなら、solrにあまり踏み込まなくもよさそうですが、それなりの検索をしようと思ったら、ちゃんとインデックスの仕組みをおさえる必要があるようです。