0

いくつかの理由により、ThinkingSphinxからSunspotに変換しています。検索ロジックを書き直す必要がありますが、以下を変換する方法がわかりません。

search:anyをSunspotに変換したい。これは、オブジェクトが一致するためにすべてのキーワードが存在する必要がないことを意味します。(キーワードはどれでもかまいませんが、関連性の高い順に並べられます)。ただし、Sunspotのドキュメントでは見つかりません。

# Thinking Sphinx

search_result = Business.search([attributes[:name],attributes[:address]], match_mode: :any)

また、Sunspotを介してSolrにストップワードを簡単に追加する方法も探しています。Thinking Sphinxは、ymlで指定する方法を提供します。ただし、Sunspot ::Railsymlには同等のものはありません。

4

1 に答える 1

2

Sunspot の最小一致

オブジェクトが一致するために、すべてのキーワードが存在する必要はありません

Solr では、これが「最小一致」の概念です。以前の回答、私のブログ記事、およびその主題に関する Solr wiki ドキュメントを参照できます。

上で書いたものと同様のクエリは次のようになります...

@search = Business.search do
  fulltext query_string, :minimum_match => 0
end
@businesses = @search.results

ストップワード

ストップワードについては、使用しないことをお勧めします。Solr の DisMax アルゴリズムは、結果をソートする目的で一般的な用語を無視して十分な仕事をするはずです。ストップワードが本当に必要になったのは、テキスト フィールドをファセットしてワード クラウドを生成するときだけでした。

したがって、本当にストップワードが必要な場合は、StopFilterFactoryをテキスト フィールドのanalyzerブロックに追加します。ディレクトリ ( と同じディレクトリ)に対応するstopwords.txtファイルを作成します。solr/confschema.xml

(実際には、Sunspot 構成にはstopwords.txtデフォルトでサンプル ファイルが付属しているはずです。)

于 2011-12-09T19:13:11.160 に答える