Фильтр поиска Azure с пингами в результатах поиска
Я создаю приложение, где вы можете искать геймеров. У меня есть фильтр ниже:
var filter = $ "(Game / any (x: search.in (x, '{string.Join (" | ", query.Games)}', '|')))";
Свойство Game представляет собой коллекцию Edm.Collection, и если в списке query.Games присутствует одно или несколько слов в играх, то должно быть совпадение. Это прекрасно работает в большинстве сценариев. Но нет, если одна из игр содержит '(пинг). Пинг не является специальным символом, как избежать этого?
1 ответ
Одинарные кавычки являются зарезервированными символами в синтаксисе фильтра OData. Одинарные кавычки (') используются для разделения литерала, используемого в выражении фильтра. Чтобы обойти это, вы можете добавить дополнительную одинарную кавычку к той, которая указана в названии вашей игры, и она будет интерпретирована как цитата, являющаяся частью текста.
Например если у вас есть игра с именем ga'me2, вы можете использовать ее в фильтре, как показано ниже.
$filter=Game/any(x: search.in(x, 'game1, ga''me2')
В вашем случае вам, вероятно, придется сделать String.Replace для отдельных названий игр.