2016-07-04 5 views
0

私はサンドイッチの検索インデックスを持っています。インデックスには、id、meat、breadの3つのフィールドがあります。各フィールドはEdm.Stringです。このインデックスでは、ここでの私のデータのサブセットです:Luceneクエリ - Azure検索でAND演算子に失敗しましたか?

ID | Meat  | Bread 
----------------------- 
1 | Ham  | White 
2 | Turkey  | Hoagie 
3 | Tuna  | Wheat 
4 | Roast Beef | White 
5 | Ham  | Wheat 
6 | Roast Beef | Rye 
7 | Turkey  | Wheat 

私は小麦のパンの上のすべてのハムや七面鳥のサンドイッチを返すクエリを記述する必要があります。これを行うために、次のように作成しました。

{ 
    "search":"(meat:(Ham|Turkey) AND bread:\"Wheat\")", 
    "searchMode":"all", 
    "select":"id,meat,bread" 
} 

このクエリを実行すると、結果が表示されません。私は何が欠けていますか?私は間違って何をしていますか?私は完全なクエリを理解しようとしています。フィールドレベルのクエリはフレーズ演算子をサポートしますか?私は何が間違っているのか分かりません。

答えて

1

"queryType": "full"を使用してLucene構文を要求する必要があります。 example on MSDNを参照してください。

つまり、達成しようとしているのは、フィルタを使用すると、より簡単で効率的に行われます。インデックスの関連フィールドをフィルタ可能にすると仮定すると、$ filter =(meat eq 'Ham'またはmeat eq 'Turkey')とbread eq 'Wheat'のフィルタ式を使用できます。フィルタの詳細については、this articleを参照してください。お役に立てれば!

関連する問題