SQL Server 2008 R2 полнотекстовый поиск для магазина

Это длиннее, поэтому, пожалуйста, потерпите меня:-)

Я нахожусь в ситуации, чтобы продвинуть поиск нашего интранет-магазина. Текущее решение работает хорошо, но есть некоторые недостатки в том, как оно реализовано.

Мы используем ASP.NET и SQL Server 2008 R2, и поиск в основном выполняется с CONTAINSTABLE, Проблема, с которой мы сталкиваемся, заключается в том, что некоторым пользователям необходимо найти элементы, которые имеют конкретные технические / физические детали в описании. Некоторые примеры поисковых запросов:

SomeItem 1/2"
SomeotherItem 30°C
SomeThirdItem 3,8V

В качестве примера описания предметов, которые я пытаюсь найти с помощью первого поискового запроса, элементы выглядят в основном так

SomeItem 1/2"x3/8" additionalTextblabla
SomeVendor SomeItem 1/2"x3/8" additionalTextblabla

Я использую Иронию, чтобы преобразовать поисковый запрос в критерии поиска для CONTAINSTABLE, Я даже поддерживаю такие вещи, как исключения (с -) перед поисковыми терминами и подстановочные знаки в конце поисковых терминов.

Теперь, насколько я понимаю, при обновлении полнотекстового индекса такие термины, как 1/2", не индексируются, и поэтому CONTAINSTABLE не находит его при поиске как условие. Я также сталкиваюсь с проблемами "и", используемыми в поиске, потому что это вызывает синтаксические ошибки на уровне SQL, и поэтому я должен отбросить их еще до того, как поиск попадет в базу данных.

Пример: SomeItem 1/2"в настоящее время преобразуется в критерии поиска ("SomeItem" AND "1/2") и возвращает результат 0, потому что FullTextIndex считает / как пунктуацию и не индексирует ту часть описания элементов, которую я пытаюсь найти (по крайней мере, насколько я понимаю).

Как мне решить эту проблему? Можно ли это сделать с CONTAINSTABLE или мне нужно сделать что-то совсем другое? Я выполнил поиск по нескольким магазинам наших поставщиков, у которых, похоже, 0 проблем с такого рода запросами.

Текущий "обходной путь" заключается в том, что если поиск не дал результатов, я снова запускаю тот же поиск с FREETEXTTABLE вместо CONTAINSTABLE, который в основном находит предметы, но также много не связанных вещей.

Вскоре мы собираемся протестировать наш код на SQL Server 2014, влияет ли это на работу полнотекстового индекса?

С наилучшими пожеланиями

-Dave

0 ответов

Другие вопросы по тегам