私は太陽黒点Sunspot:異なる値を持つ複数のフィールドでフルテキストクエリを実行する方法は?
q=exact_term_text:foo OR term_textv:foo* OR alternate_text:bar*
と、次の生のSolrクエリーを再現したいのですが、私はあれば理解することはできませんよ、それはそれだので、どのようにこれは、標準の黒点インタフェースを介して、可能です:
fulltext
方法は、私はどちらか"foo"
または"bar"
再を渡すかのように、私はfulltext
に最初のものとして渡す引数は何か分からないでしょう- 複数のテキスト/ search_fields引数を受け入れていないようですスクロールが一致しない
- 空の引数を渡すと、私は
q=*:*
- というスコープのフィルタを取得します。
with(:term).starting_with('foo*')
は(名前が示すように)フィルタクエリとして適用されるため、スコアリングには関与しません。
文字列を手作業で作成することも可能ですが(おそらくadjust_solr_params
を使用することもできますが)、それは怪しいようです。より良い解決策はありますか?
(エッジ)ngramsを使用することは、同じフィールドを2回繰り返します。 susnpotのdismaxクエリハンドラを使用しても、ハッキリした解決法を使わないでluceneクエリを行うことはできないようです。だから私はとにかく答えを受け入れています。 – riffraff
https://github.com/sunspot/sunspot/wiki/Fulltext-searchにあるSunspotのドキュメントでは、明示的に次のように述べています。「キーワードメソッドは1回の検索で複数回呼び出されるべきではないことに注意してください。以前に指定されたキーワード。 *( 'keywords'は' fulltext'にエイリアスされていますが、それらは同じ方法です)*著者によれば、あなたのソリューションは動作しません...しかし、それは完全に動作するようです。うーん、誰かが横たわっている。 – Jazz
おそらく、フルテキストを同じフィールドで2回呼び出さないでください。 – juanpastas