次のモデルがあり、 で検索可能にしたとしsunspot_rails
ます。
class Case < ActiveRecord::Base
searchable do
end
end
schema.xml
Rails の Sunspot の標準はid
、インデックス付きフィールドとして宣言します。Web インターフェイスを使用して solr にアクセスし、次のようなクエリをテストすると、次のようになります。
http://localhost:8982/solr/select/?q=id%3A%22Case+15%22&version=2.2&start=0&rows=10&indent=on
equal toを検索しCases
て正常に動作し、結果を返します。id
Case 15
問題は、Rails コンソールで Sunspot Rails を使用して検索を実行したときです。
s = Case.search do
keywords('id:"Case 15"')
end
私は得る:
=> <Sunspot::Search:{:fl=>"* score", :rows=>10, :start=>0, :q="id:\"Case 15\"", :defType=>"dismax", :fq=>["type:Case"]}>
これは、正しいクエリ値が正しく入力されていることを示してい:q
ますが、ヒット数は 0 です。
s.hits
戻り値
=> []
keywords
それが同等ではなくtext
、コロンの前に定義されたフィールドではなく、フィールド (全文検索)のみを検索すると仮定する:
と、次のことを試すことができます。
s = Case.search do
with(:id, "Case 15")
end
しかし、これは Sunspot 例外で失敗します:
Sunspot::UnrecognizedFieldError: No field configured for Case with name 'id'
id
モデルのインデックス付き標準 solr/sunspot フィールドを使用して検索するにはどうすればよいですか?
質問をより便利にするために、IDで注文するにはどうすればよいですか。以下は機能しません。
s = Case.search do
keywords("xxxx")
order_by :id, :desc
end
動作しません。Sunspot::UnrecognizedFieldError: No field configured for Case with name 'id'