2016-08-03 12 views
1

"product"フィールドに2つの値のいずれかが含まれているかどうかを確認するためのクエリを作成しようとしています。SOLR bfクエリの2つの値のいずれかのフィールドを照会することはできますか?

私の前のクエリは、本質的に従っていました:

query({!v=products:PRODUCT1})^2.000 

私は何をしようとすると、次のとおりです。

query({!v=products:(PRODUCT1 PRODUCT2)})^2.000 

デフォルトのオペレータはORですので、私はこれは私が期待したものだろうと思ったが、代わりに、 "未定義のフィールド 'PRODUCT2'"に関するエラーメッセージを受け取りました。

それ以来、私はifs、exists、ors、querysを使って、 'products'に2つの値のいずれかが含まれているかどうかを調べることができる解決法を試しました。 Bfクエリに別々の追加機能を追加して2つのクエリを追加することになりましたが、これは好ましくはありません。これは、エンティティが両方の製品ではなく、

私は探しているものを達成するための良い文書を探してきましたが、今まで共通の問題に対する非常に単純な解決策であると思われるものを見つけることができませんでした。この問題に関するいかなる助力も非常に高く評価されるだろう。あなたはeDismaxまたはdismaxとしてDEFTYPEを設定する必要がBFパラメータを使用するためには

答えて

0

。あなたが求めていると、一つの解決策には、次のされているものを達成するには、いくつかの方法があります。

それは製品2が含まれている場合、フィールドの製品は2で、ケースには、製品1が含まれている3により昇圧されます
if(termfreq(products,"PRODUCT1"),3,if(termfreq(products,"PRODUCT2"),2,1)) 

と1であればどちらも含まれていません。明らかにそれは単なる例であり、あなたの必要に応じて変更することができます。完全な照会の下で見つけてください。

https://<MY_SERVER_NAME>:9443/solr/<MY_COLLECTION>/select?q=*%3A*&wt=json&indent=true&defType=edismax&bf=if(termfreq(products%2C%22PRODUCT1%22)%2C3%2Cif(termfreq(products%2C%22PRODUCT2%22)%2C2%2C0)) 
関連する問題