0

次のモデルがあり、 で検索可能にしたとしsunspot_railsます。

class Case < ActiveRecord::Base
  searchable do
  end
end

schema.xmlRails の 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て正常に動作し、結果を返します。idCase 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'

4

1 に答える 1