В настоящее время я работаю над созданием полнотекстовой поисковой системы для одного из наших сайтов, используя функции, которые предлагает сама CMS. Это позволяет мне выполнять SQL-запрос без программирования среднего уровня.
Однако это также означает, что я не могу использовать программирование для фильтрации или очистки данных поискового запроса. Работает нормально, пока пользователь не введет «шумовые слова».
Мой текущий запрос принимает введенное пользователем значение и выполняет некоторые операции с ним перед отправкой в функцию CONTAINS, например, ltrim / rtrim. Он также заменяет пробел на «И», поэтому каждое слово используется в качестве отдельного предложения.
Здесь и начинается проблема. Судя по всему, SQL Server жалуется, когда в одном из предложений есть слово-шум (и только это). Поэтому, когда пользователь вводит «Wat niemand has verwacht» в качестве запроса (на голландском языке), SQL Server жалуется, что предложение содержит только пропущенные слова. Он работает с первой половиной ('wat niemand'), но выходит, как только вводится 'had'. После редактирования функция CONTAINS получит «Wat AND niemand AND had AND verwacht» и будет подавлена.
Итак, конкретно: кто-нибудь знает, как я могу заставить SQL Server отфильтровывать шумовые слова? Я могу, конечно, включить огромный список замен, в который включено каждое слово шума, но я сомневаюсь, что это эффективно. Я также могу отфильтровать <= 3 буквенных слова, но я не думаю, что это сильно поможет для более длинных шумовых слов (как и предположительно, «amfitheatersgewijze» также является шумовым словом). Очистка файла конфигурации шумовых слов и перестройка поискового индекса - это мера, которую я бы рассмотрел только последним. </p>