20682


Ruby on RailsでSunspotを通してSolrの検索システムを作っています。

検索自体は問題なくできるのですが、より高度な検索を実装したいと思っており改修しております。  
現状の検索ですと、「渋谷駅」と検索すると、「渋谷」は検索結果に出てきません。  
同様に、「東京都」で検索すると、「東京」はマッチしません。

「渋谷駅」と検索したら「渋谷」を含むものも検索結果に出てくるように改修したいです。

困っているので、もしどなたかご存知でしたら教えて頂けないでしょうか？

よろしくお願い致します。


CC BY-SA 3.0
2016-01-04T12:17:43.257
20597
2016-01-06T23:50:54.813
13879
question
ruby-on-rails ruby solr
Solrにおけるあいまい検索の実装について


例えば都道府県や市町村、駅名程度の語尾を無視する程度であれば検索ワードを渡す時に

[code]

    search_text = search_text.gsub(/駅$/,'').gsub(/都$/,'')
    
[/code]

のようにすれば良いと思います。

形態素解析を行い、それぞれの単語に対しての検索結果を求めるのであれば全く違ったアプローチが必要になってくるでしょう。


CC BY-SA 3.0
2016-01-06T15:39:43.920
20679
2016-01-06T15:39:43.920
3271
20597
answer


Solrをセットアップして試してみましたが、フィールドが

  * org.apache.solr.schema.TextField のときは、"渋谷駅"で「渋谷」を含むドキュメントが検索できる
  * org.apache.solr.schema.StrField のときは、"渋谷駅"でも"渋谷"でもヒットせず、"*渋谷*"でなら検索できる

という感じでした。(コンソールのquery画面で確認)

日本語用のフィールドであれば、JapanesePartOfSpeechStopFilterFactoryを使って特定の品詞を落とすことができるようです。デフォルトで助詞などが除外されるようになっていますが、`lang/stoptags_ja`を編集することで任意の品詞を除外対象に追加できます。`名詞-
接尾-地域  
`を追加すると「市」とか「駅」とかが落ちました。(コンソールのAnalysisで確認)


CC BY-SA 3.0
2016-01-06T23:50:54.813
20682
2016-01-06T23:50:54.813
5793
20597
answer