Мое окончательное решение основано на том, что «C#» трактуется по-разному в «C#». Когда буква перед символом «#» является верхним регистром, «#» НЕ рассматривается как символ нарушения слова. Поэтому мне пришлось написать скрипт, обновляющий таблицу, в которую был включен полнотекстовый индекс, чтобы изменить все «C#» на «C#» (затем я запускаю этот скрипт в качестве задания sql, чтобы убедиться, что нет любовника case C#) и обеспечить при поиске, что 'C#' изменен на 'C#', который я сделал в моем коде.
Альтернативно, если у вас есть SQL2008 и вы можете изменить полнотекстовый язык для индекса fts, вы можете установить его для использования «нейтрального» языка в качестве словаря для индексированных столбцов. «Нейтральный» прерыватель слов разбивается только на белый текст. Затем измените команду fts, чтобы указать ее в качестве используемого языка, например. выберите * из FREETEXTTABLE (tblList, colLanguage, 'C#', LANGUAGE 0), вы можете искать для 'C#' или 'C#' без каких-либо других изменений * кроме перестроения индексов.
* вам, возможно, потребуется изменить «полнотекстовый язык по умолчанию» для вашего экземпляра базы данных, я должен был.
Мне нужно заглянуть в этот ответ, чтобы увидеть, могу ли я сделать это, прежде чем пометить его как ответ. –
Используя следующее, вы сможете найти слово breaker для своего языка, но не разрешить вам редактировать список нарушающих работу символов , Кажется, вам нужно написать свой собственный прерыватель слов или канаву FTS, если вы хотите это сделать. SELECT * FROM sys.fulltext_languages; EXEC sp_help_fulltext_system_components 'wordbreaker'; –