私は次のモデルを持っており、sunspot_rails
で検索可能としたとします。レールにモデルIDで検索結果を注文するSunspot Rails?
class Case < ActiveRecord::Base
searchable do
end
end
太陽黒点の標準schema.xml
は、インデックスフィールドとしてid
宣言する。
Case 15
細かい作品を返す結果に等しい
id
で
Cases
を検索
http://localhost:8982/solr/select/?q=id%3A%22Case+15%22&version=2.2&start=0&rows=10&indent=on
:私はSolrのとテストにアクセスするためのWebインターフェイスを使用するときのようなクエリを照会します。
私はレールコンソールで太陽黒点のRailsで検索を実行するときに問題がある:
s = Case.search do
keywords('id:"Case 15"')
end
私が手:
それは正しく:q
で正しいクエリ値を置くことを示して
=> <Sunspot::Search:{:fl=>"* score", :rows=>10, :start=>0, :q="id:\"Case 15\"", :defType=>"dismax", :fq=>["type:Case"]}>
ヒット数は0です:
s.hits
返信
=> []
我々はkeywords
コロン:
前に定義されたフィールド等価ではないとだけtext
フィールド(全文検索)を検索していないと仮定した場合、私は次のことを試すことができます。
s = Case.search do
with(:id, "Case 15")
end
これは太陽黒点の例外で失敗します。私は、インデックス付きの標準的なSolrの/黒点id
フィールドを使って検索することができますどのように
Sunspot::UnrecognizedFieldError: No field configured for Case with name 'id'
私のモデルの?
質問をより便利にするために、IDでどのように注文できますか?以下は動作しません。
s = Case.search do
keywords("xxxx")
order_by :id, :desc
end
は機能しません。 Sunspot::UnrecognizedFieldError: No field configured for Case with name 'id'
私はこの質問を投稿して以来、長い間、 orkaroundは、自分のidフィールドを追加するための最初の提案に似ています。しかし、それは別のインデックス可能なフィールド "id_i"を作成するため、 'class Case
あなたの質問はどちらも私の回答で答えられます:) 1.なぜか:なぜなら、それはSunspotによって使用される内部フィールドなので、カプセル化の原則を破るので、それを使用したり仮定したりしてはいけません(また、バージョンの黒点、その意味またはその実装は完全に変更することができます)2.本当にそれを使用したい場合は、私の答えの最後の部分を見てください。 –
私は確かあなたの記事が役に立つと感じました。 – vise