Что произойдет в SQL Server, если полнотекстовый поиск выполняется с использованием полнотекстового индекса, определенного для другого языка

Я новичок в SQL Server полнотекстового поиска.

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

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

Мне было интересно, что произойдет, если я создам полнотекстовый индекс для английского языка с использованием кода 1033 в базе данных, а затем использую тот же индекс для поиска с использованием неанглийской строки и если в некоторых записях есть неанглийские данные.

Будет ли он полностью потерпеть неудачу или он вернет некоторые данные. Какое будет поведение?

1 ответ

Решение

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

  1. Слова будут разбиты на части в индексе в соответствии с английскими правилами. (Например: dog-catcher разделен так, что он может быть сопоставлен, вы можете искать на dog или же catcher, Но dog's рассматривается как 1 слово и не будет соответствовать dogЯ уверен, что есть другие языки, в которых эти правила не совпадают или где определенные знаки препинания играют другую роль, и поэтому слова не будут разбиты на части, как ожидалось.
  2. Если вы используете стоп-лист на английском языке, любые неанглийские слова с таким же написанием, что и обычные английские слова (например, is, at, as, can), будут удалены из вашего индекса.
  3. Вы не сможете использовать FREETEXT/FREETEXTTABLE или же FORMSOF потому что они будут использовать английские синонимы и английские инфлективные формы.
  4. Когда используешь NEARправила определения расстояния между словами могут отличаться.
  5. Ищет цитируемые фразы (например: CONTAINS(*, '"planet earth"')) может иметь непредсказуемые результаты. Полнотекстовый движок будет применять правила английского языка к тому, как анализируются слова и как обращаться с пунктуацией. Например, при поиске "a. lincoln" в английском индексе парсер будет думать, что a. является концом предложения и, следовательно, может не соответствовать тексту a lincoln в указателе. Если вы имеете дело с языком, который имеет разные правила о том, как заканчиваются предложения или как используются точки с сокращениями, то вы можете столкнуться с проблемами. (Это только один пример. Вероятно, есть больше потенциальных проблем.)
  6. Поиски по номерам могут привести к непредсказуемым результатам. Например, на английском языке вы можете использовать запятую в больших количествах (например: 1,234,567) и полный текст будет соответствовать этому 1234567 и наоборот. Если вы имеете дело с языком, который имеет другие правила форматирования чисел, то вы можете столкнуться с проблемами.

Лучше всего использовать нейтральный язык без стоп-листа.

Другие вопросы по тегам