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