#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. Привет, Херб, это могло бы сработать, но наше приложение работает на клиентских серверах, которые обычно заблокированы, поэтому доступ к файлу ограничен. К сожалению, заставить клиентов копировать и вставлять шумовые слова было бы неприемлемым решением