Как фильтровать данные ADO.NET, используя поле Полнотекстового поиска (FTS)? - PullRequest
0 голосов
/ 22 января 2010

Мы используем службы данных ADO.NET и создаем фильтры на основе URL. Пример: / Клиенты? Filter = City eq 'London'

Теперь нам нужно отфильтровать по полному тексту поля «тегов». НАДЕЕТСЯ НА: / Клиентов? Filter = Отметить как «Friendly»

ПРОБЛЕМА: ADO.NET не имеет оператора LIKE. ADO.NET, похоже, не нравится FTS (Он не находит соответствия - потому что он не анализирует файлы CSV)

Есть идеи, как заставить это работать? THX

Ответы [ 2 ]

1 голос
/ 13 апреля 2011

Службы данных ADO.NET поддерживают оператор "LIKE".

Запросы, подобные этому:

http://localhost/EntitiesService.svc/CalEvents?$filter=indexof(Subject,'fO') ge 0

http://localhost/EntitiesService.svc/CalEvents?$filter=substringof('fox',Subject) eq true

или версия LINQ:

 var result  = _context.CalEvents.Where(ce => ce.Subject.Contains(searchTerm))

Делай, наверное, то, что ищешь. Они генерируют SQL-запрос с оператором «LIKE» и добавляют «%» к поисковому запросу. Таким образом, они действуют как оператор «НРАВИТСЯ».

FTS с оператором "Contains", например ... не поддерживается, у меня нет времени на проверку, но, кажется, я видел это не так давно.

Дополнительная информация: http://www.odata.org/developers/protocols/uri-conventions

0 голосов
/ 22 января 2010

Я не работал с ADO.NET Data Services как таковой, но при работе с полнотекстовым поиском я обнаружил, что оператор CONTAINS гораздо более мощный. Будь то специальная строка sql или хранимый процесс.

...