Запрос SQl Server 2005 шум полнотекстового поиска / стоп-слова

#sql-server-2005 #full-text-search #stop-words #noise-words

#sql-server-2005 #полнотекстовый поиск #стоп-слова #шум-слова

Вопрос:

Возможно ли получить список шумов полнотекстового поиска / стоп-слов из SQL Server 2005 путем запроса базы данных?

Я знаю, что шумовые слова находятся в текстовом файле ~ /FTData/noiseEng.txt но этот файл недоступен для нашего приложения.

Я просмотрел таблицы sys.fulltext_ *, но, похоже, в них нет нужных слов.

Ответ №1:

Похоже, что это невозможно в SQL 2005, но есть в SQL Server 2008.

Расширенные запросы для использования стоп-слов / списков полнотекстового поиска SQL Server 2008

Этот следующий запрос возвращает список всех стоп-слов, которые поставляются с SQL Server 2008. Это приятное улучшение, вы не можете сделать этого в SQL Server 2005.

Стоп-слова и стоп-списки — SQL Server 2008

Шумовые слова SQL Server 2005 заменены стоп-словами. При обновлении базы данных до SQL Server 2008 с предыдущей версии файлы шумовых слов больше не используются в SQL Server 2008. Однако файлы шумовых слов хранятся в FTDATA FTNoiseThesaurusBak папки, и вы можете использовать их позже при обновлении или создании соответствующих стоп-списков SQL Server 2008. Информацию об обновлении файлов с шумовыми словами до списков остановок см. в разделе Обновление полнотекстового поиска.

Ответ №2:

Я просто копирую файл noise words из Program FilesMicrosoft SQL ServerMSSQL.1MSSQLFTData в свое приложение и использую его для удаления шумовых слов.

     Public Function StripNoiseWords(ByVal s As String) As String
        Dim NoiseWords As String = ReadFile("/Standard/Core/Config/noiseENU.txt").Trim
        Dim NoiseWordsRegex As String = Regex.Replace(NoiseWords, "s ", "|") ' about|after|all|also etc.
        NoiseWordsRegex = String.Format("s?b(?:{0})bs?", NoiseWordsRegex)
        Dim Result As String = Regex.Replace(s, NoiseWordsRegex, " ", RegexOptions.IgnoreCase) ' replace each noise word with a space
        Result = Regex.Replace(Result, "s ", " ") ' eliminate any multiple spaces
        Return Result
    End Function
  

Комментарии:

1. Привет, Херб, это могло бы сработать, но наше приложение работает на клиентских серверах, которые обычно заблокированы, поэтому доступ к файлу ограничен. К сожалению, заставить клиентов копировать и вставлять шумовые слова было бы неприемлемым решением