Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

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

Другие советы

Я просто копирую файл шумовых слов из \Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData в свое приложение и использую его для удаления ненужных слов.

    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})\b\s?", 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top