2016-07-04 11 views
0

Ich habe einen Suchindex von Sandwiches. Der Index hat drei Felder: ID, Fleisch und Brot. Jedes Feld ist ein Edm.String. In diesem Index, hier ist eine Teilmenge meiner Daten:Lucene-Abfrage - UND-Operator in Azure Search fehlgeschlagen?

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 

Ich brauche eine Abfrage zu schreiben, die alle Schinken oder Truthahn-Sandwich auf Weizenbrot gibt. In einem Versuch, dies zu tun, habe ich erstellt die folgenden:

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

Wenn ich diese Abfrage ausführen, bin ich nicht sehen keine Ergebnisse. Was vermisse ich? Was mache ich falsch? Ich versuche, vollständige Abfragen zu verstehen. Unterstützen Abfragen auf Feldebene den Phrasenoperator? Ich bin mir nicht sicher, was ich falsch mache.

Antwort

1

Sie müssen "queryType": "full" verwenden, um die Lucene-Syntax anzufordern. Siehe eine example on MSDN.

Das, was Sie erreichen möchten, ist einfacher und effizienter mit Filter. Angenommen, Sie machen die relevanten Felder in Ihrem Index filterbar, können Sie den folgenden Filterausdruck für Ihr Beispiel verwenden: $ filter = (Fleisch eq 'Ham' oder Fleisch eq 'Türkei') und Brot eq 'Weizen'. Weitere Informationen zu Filtern finden Sie unter this article. Hoffe das hilft!

Verwandte Themen