Полнотекстовый поиск с использованием Freetexttable при отсутствии слов шума - SQL Server 2008 R2 Transform Noise Words не работает

Я выполняю полнотекстовый поиск своего сайта с использованием SQL Server 2008 R2 и freetexttable. Я получаю эту ошибку при вводе стоп-слова:

Информационный: условие полнотекстового поиска содержало шумовые слова.

Поэтому я сделал то, что все сказали, и включил Transform Noise Words, чтобы слова stop / noise игнорировались и запрос мог продолжаться. Но это ничего не изменило

sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'transform noise words', 1;
RECONFIGURE;
GO

Я все еще получаю то же сообщение об ошибке. Так что сейчас мой единственный вариант - отключить стоп-лист, но это плохо, потому что, если кто-то добавит "в поиске", он вернет ВСЕ страницы, потому что на каждой странице есть "в". Я хочу удалить стоп-слова, но SQL Server 2008 R2 не работает для меня.

Кто-нибудь действительно заставил это работать в 2008 R2? Мой уровень совместимости был уже 100.

Могу ли я получить стоп-слова, которые игнорируются и не индексируются?

1 ответ

Я ценю, что очень поздно, это может помочь кому-то еще в будущем.

Создайте список новостей на основе системного списка; это создает новый стоп-лист со всеми словами в системном стоп-листе (который вы не можете изменить в 2008+ sql)

CREATE FULLTEXT STOPLIST slMyNewStopList
FROM SYSTEM STOPLIST AUTHORIZATION dbo;

Затем я проверил, что новый список был создан правильно;

select * from sys.fulltext_stoplists
select * from sys.fulltext_stopwords

В моем случае новый стоп-лист был ID 6. Слово, которое я хотел удалить, было этим; так как люди хотели иметь возможность искать "функцию ИТ" в данных. Поэтому я проверил слова в каталоге, как это;

select * from sys.fulltext_stopwords
where stoplist_id = 6 and stopword = 'it' and language like '%english%'

Чтобы удалить слово из стоп-листа, нужно вызвать системную функцию; я удалил его для английского и британского английского. Вы должны иметь точки с запятой в этой точке.

ALTER FULLTEXT STOPLIST slMyNewStopList DROP 'it' LANGUAGE 'English';

ALTER FULLTEXT STOPLIST slMyNewStopList DROP 'it' LANGUAGE 'British English';

Затем я подтвердил отсутствие слова в моем стоп-листе, снова выполнив запрос на выборку.

select * from sys.fulltext_stopwords
where stoplist_id = 6 and stopword = 'it' and language like '%english%'

Затем я обновил таблицу, в которой хотел найти слова ИТ;

USE [Database]
GO
ALTER FULLTEXT INDEX ON [dbo].[tblDocuments] SET STOPLIST = [slMyNewStopList]

Наконец я перестроил каталог, чтобы все документы были переиндексированы.

USE [Database]
GO
ALTER FULLTEXT CATALOG [catExample] REBUILD
GO
Другие вопросы по тегам