Как использовать зарезервированные слова в поисковом фильтре Azure?
Я использую опцию поискового фильтра Azure, как показано ниже
$filter=cityList/any(t: search.in(t, '1')) and name eq 'hi tech bar & restaurant' &search=*&scoringProfile=search-score&searchMode=Any&queryType=FULL
Для всех текстовых фильтров, кроме зарезервированных слов, работают нормально.
; /?: @ = + &
Может кто-нибудь помочь мне найти, как использовать зарезервированные слова в Azure Search Filters?
Заранее спасибо.
1 ответ
Есть два уровня кодирования для рассмотрения. Во-первых, само выражение OData. Я предполагаю, что вам нужно использовать специальные символы в строковой константе, и в этом случае единственный символ, который вам нужно кодировать, - это одинарные кавычки, которые вы можете кодировать путем удвоения. Например: $filter=Name eq 'O''Neil'. Второй уровень кодирования зависит от того, используете ли вы HTTP GET или POST для вашего поискового запроса. Если вы используете Azure Search .NET SDK, он позаботится об этом подробнее. Если вы используете REST API напрямую и используете GET, вам нужно закодировать URL-адрес выражения фильтра. Если вы используете POST, вам нужно закодировать выражение фильтра так же, как любую другую строку JSON. Например, вам нужно кодировать \ as \ и " as \" и т. Д. Надеюсь, это поможет.