3

solrを使用するRubyonRailsアプリケーションがあります。そのために黒点の宝石を使います。また、実稼働環境にはwebsolrを使用しています。

sunspotsolrを使用して全文検索を実行できることはわかっています。ただし、特定の単語を含むヒット(および最終的には結果)を除外できるようにもしたいと思います。

クラスの例:

class Article
    searchable do
        text :title
        text :content
    end
end

ここで、コンテンツに「オバマ」が含まれている記事を検索しますが、 「レディー・ガガ」という単語含まれている記事も除外したいと思います。返された結果の配列にrejectブロックを適用できることはわかっていますが、この状況をSolrレベルで処理したいと思います。

私が自分の問題を明確に述べたことを望みます。

よろしくお願いします。

4

2 に答える 2

3

https://github.com/sunspot/sunspot/wiki/Fulltext-searchから

通常のブールクエリ構文の小さなサブセットが解析されます。特に、よく一致する引用符を使用してフレーズを区別し、+および-演算子を使用してそれぞれ単語を要求または除外できます。

それはあなたが探していたものですか?

于 2012-12-07T00:52:13.813 に答える
1

私はadjust_solr_params否定句でedismaxを使用するために使用します。

Article.search do
  fulltext params[:q]
  adjust_solr_params do |solr|
    solr['defType'] = 'edismax'
    solr['q'] += %( -"some phrase to exclude")
  end
end

最も明白なアプローチではなく、確かに文書化されておらず私はそれをテストしていませんが、機能するはずです。うまくいけば、Sunspotの将来のバージョンはedismaxをよりネイティブにサポートするでしょう。

于 2012-12-07T16:36:27.063 に答える