Исключить апострофы из полнотекстового поиска SQL Server - PullRequest
4 голосов
/ 28 августа 2010

Я хотел бы знать, как исключить апострофы из индексации при полнотекстовом поиске.

Например, если кто-то вводит поисковый запрос «o'brien» или «obrien», я бы хотел, чтобы он совпадал со всеми случаями, когда чье-либо имя совпадает с «O'Brien» или «OBrien».

Однако, если я ищу:

select * from MyTable where contains (fullName, '"o''Brien*"')

Возвращает только апострофы. Но если я сделаю:

select * from MyTable where contains (fullName, '"oBrien*"')

Возвращает только те, у кого нет апострофа.

Короче говоря, я хочу знать, возможно ли для FTS индексировать и "O'Brien", и "OBrien" как "obrien", чтобы я мог найти оба.

Пока решение:

select * from MyTable where contains (fullName, '"oBrien*" OR "o''Brien*"')

будет работать, однако я не могу сделать такое предположение, если пользователь введет «obrien».

Я ищу решение, которое работает как на SQL Server 2005, так и 2008.

1 Ответ

0 голосов
/ 28 августа 2010

в зависимости от того, сколько места у вас есть, вы можете добавить еще один столбец

fullName_noPunctuation

содержит только буквенные символы имени, уберите пунктуацию из критериев поиска и выполните поиск в столбце без знаков препинания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...