2017-01-16 7 views
2

При использовании кода C# .NET для отправки запроса в Azure Search и при использовании «Поискового проводника» в интерфейсе Azure Portal в стиле Resource Manager Azure Portal поиск будет успешным, если данный запрос (в качестве входных данных в проводнике поиска):

search=foo&facet=category&$filter=category eq 'Teams'

Но терпят неудачу, когда дано: вернулся

search=foo&facet=categoryDetails&$filter=categoryDetails eq 'Subcategory'

ошибка:

{ 
    "error": { 
     "code": "", 
     "message": "Invalid expression: The operand for a binary operator 
        'Equal' is not a single value. Binary operators require 
        both operands to be single values.\r\nParameter name: 
        $filter" 
    } 
} 

(Сообщение однострочное. Он отформатирован с разрывами строк здесь для упрощения чтения.)

Я даже попробовал другой фасет, чье имя также является термином на камне, и поиск также попал в ту же ошибку.

Моей теорией является то, что имена верблюжьей косы вызывают проблемы с Azure Search. Кто-нибудь еще испытал это раньше? Полагаю, я буду экспериментировать со всеми строчными именами, ожидая, когда свет будет пропущен.

ответ

3

Ошибка не имела ничего общего с камнем, но с тем фактом, что эти «поля» имеют тип DataType.Collection(DataType.String) (массив строк).

Мне нужно было выполнить поиск с использованием подзапроса, как показано на рисунке Filter and collections in OData