Могу ли я определить, какие средства разбиения по словам использовать при создании полнотекстового индекса mssql? - PullRequest
7 голосов
/ 12 октября 2010

Я создал полнотекстовый каталог, в котором хранятся данные из некоторых столбцов таблицы, но содержимое, похоже, разделено на символы, которые я не хочу рассматривать как разделители слов. ("/", "-", "_" и т. д.)

Я знаю, что могу установить язык для средства разбиения по словам, и http://msdn.microsoft.com/en-us/library/ms345188.aspx дает некоторую идею о том, как устанавливать новые языки, - но мне нужен более прямой контроль, чем этот, потому что все эти языки по-прежнему не работают на символы, которые я не хочу разбивать.

Есть ли способ определить мой собственный язык для поиска средств разбиения по словам?

Ответы [ 2 ]

4 голосов
/ 29 октября 2012

Полнотекстовые индексы учитывают только символы _ и ` при индексации. Все остальные символы игнорируются, и слова разделяются там, где встречаются эти символы. Это происходит главным образом потому, что полнотекстовые индексы предназначены для индексации больших документов, и там рассматриваются только подходящие слова, чтобы сделать поиск более точным.

Мы столкнулись с подобной проблемой. Чтобы решить эту проблему, у нас фактически была таблица перевода, где такие символы, как @, -, / , были заменены специальными последовательностями, такими как ' `at` ', '` dash` ',' `slash` 'и т. Д. При поиске в полном тексте вам придется снова заменить символы в строке поиска этими специальными последовательностями и выполнить поиск. Об этом должны позаботиться о специальных символах.

3 голосов
/ 22 октября 2010

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

Если вы готовы принять вызов и имеете доступ к некоторым знаниям C ++, вы всегда можете написать собственную реализацию IFilter. Это не тривиально, но не слишком сложно. См. Здесь ресурсы IFilter .

...