0

写真モデルでは、次の簡単なルールがあります。

  searchable do
    string :note
  end

そして、 Solrで文字列を検索しようとしました(2つのテーブルで同時に)。これは、ターミナルでのSolr クエリの出力です(最初はArticles用、2 番目はPhotos用)。

SOLR リクエスト (4.8ms) [ path=# parameters={data: fq=type%3A Article&q=searched_string&fl=%2A+score&qf=title+content&defType=dismax&start=0&rows=30 , method: post, params: {:wt=> :ruby}、クエリ: wt=ruby、ヘッダー: {"Content-Type"=>"application/x-www-form-urlencoded; charset=UTF-8"}、パス: 選択、uri: http://localhost :8982/so​​lr/select?wt=ruby , open_timeout: , read_timeout: } ]

この

SOLR リクエスト (4.4ms) [ path=# parameters={data: fq=type%3A Photo&q=asgasg&fl=%2A+score&defType=dismax&start=0&rows=30 , method: post, params: {:wt=>:ruby},クエリ: wt=ruby、ヘッダー: {"Content-Type"=>"application/x-www-form-urlencoded; charset=UTF-8"}、パス: select、uri: http://localhost:8982/so​​lr /select?wt=ruby , open_timeout: , read_timeout: } ]

コントローラ:

@articles = Article.search do
  fulltext params[:search]
end
@photos = Photo.search do
  fulltext params[:search]
end
## => searching ##
puts @articles.results #work fine
puts @photos.results #always 0

なぜSOLRがPhotoモデルを検索しないのか、まったくわかりません...すべてを指定して設定する必要がありますが、どこに問題があるのか​​ まだわかりません...

4

2 に答える 2

1

Photo モデルでは、全文検索を実行するためにtype (not ):noteとして定義する必要があると思います:textstring

searchable do
  text :note
end

また、 and を設定@articlesしましたが、質問でandを@photos確認してください。@users@photos

アップデート

サンスポットのreadmeによると:

「テキスト フィールドは全文検索可能になります。他のフィールド (整数や文字列など) を使用して、クエリのスコープを設定できます」

つまり、そのフィールドでfulltextorを実行するには、 searchable block のように宣言する必要があります。として持っています。これは、を使用した完全一致にのみ使用できます。keywordstext stringwith()

幸運を。

于 2012-03-07T18:12:56.293 に答える
0

私の問題の実用的な解決策:1。Railsサーバーを停止します2. rake sunspot:reindex3.railsサーバーを実行します

ブロック内ですべてが変更された場合は、searchableデータのインデックスを再作成する必要があります。

于 2012-03-07T23:13:45.853 に答える