2014-12-03 5 views
0

Я должен что-то отсутствует,И оператор не появляется на работу

мой поиск включает в себя строку длиной + пляж, так что я ожидаю результатов содержать только записи, где (в данном случае) поле местоположения содержит как долго и пляж.

/indexes/person2/docs?$count=true&$top=100&search=long+beach&searchFields=location 

плюс

api-version=2014-07-31-Preview 

изображение, которое я не имею репутацию размещать показывает пляж Майами, Флорида среди других.

Я пробовал настройку & searchMode = любой без изменений.

колонка выглядит следующим образом

new { Name = "location",   
Type = "Edm.String",    
Key = false, 
Searchable = true, 
Filterable = true, 
Sortable = true, 
Facetable = true, 
Retrievable = true, 
Suggestions = true }, 

мой плохой?

ответ

0

Скорее всего, это проблема. «+» в большинстве случаев рассматривается как символ пробела кодом, который обрабатывает кодировку URL. «+» не должен отображаться буквально в URL-адресе, но кодируется как% 2B. Более того, вы должны избегать строки поиска, прежде чем добавлять ее в параметр search =. Большинство языков имеют встроенный примитив для кодирования URL, который сделает это для вас (например, Uri.EncodeDataString() в .NET)

0

У меня была такая же проблема. % 2B работал и на меня. Я думаю, что меня отбросила эта страница документации Azure Search, где описывается простой синтаксис запроса, который можно использовать для уточнения поиска.

https://msdn.microsoft.com/en-us/library/azure/dn798920.aspx

Кажется, что простой синтаксис запроса, что вы должны поместить в поле ввода поиска, а не то, что вы послали бы к API.

Вот пример из моего проекта:

  • поиска = Aberdeen% 2Bdistrict (2 результатов)
  • поиска = Абердин + район (156 результатов)