2010-08-27 9 views
3

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

Например, если кто-то входит в поисковый термин для «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*"') 

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

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

+0

Версия SQL Server? (FTS сильно изменилось в период с 2005 по 2008 год) –

+0

Возможный дубликат http://stackoverflow.com/questions/676019/apostrophes-and-sql-server-ft-search –

+0

Возможный дубликат SQL-специфический. –

ответ

0

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

fullName_noPunctuation

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

+0

Это может сработать для меня. Мне нужно будет изучить это. Однако было бы лучше, если бы был способ заставить его просто индексировать «O'Brien» и «OBrien» как «obrien». – Avrom

+0

Добавлен новый столбец с именем «fullName», лишенный его апострофов и созданный на нем индекс FTS. Он смог найти и O'Briens и Obriens с помощью contains (fullSearch, «obrien *»). – Avrom

Смежные вопросы