|
Форум
|
Дмитрий |
15.12.03, 23:21 |
|
Поиск на разных языках MSSQL2000 |
|
Возможно я что-то не так понял, но согласно информации на сайте после установки данной системы полнотекстовый поиск будет доступен только на каком-то одном языке (только на руском или только на английском в зависимости от того на каком языке будет создан индекс).
Это действительно так, или все же возможно построение баз для которых поиск можно будет осуществлять одновременно на двух языках??? |
|
|
Плешко Владимир |
16.12.03, 15:25 |
|
re: Поиск на разных языках MSSQL2000 |
|
Ответ получится длинным...
При добавлении поля в полнотекстовый каталог MSSQL требуется указать язык, на котором написан индексируемый текст. Далее MSSQL передает эту информацию и способ доступа к тексту в MSSEARCH, который раельно создает поисковые индексы и осуществляет поиск.
В соответствии с указанным языком MSSEARCH вызывает зарегистрированные в системе компоненты WordBreaker (разбиение текста на слова) и Stemmer (расширение запроса словоформами). Для каждого языка зарегистрированны свои компоненты. Для русского языка - MS не поставляет. RCO for BackOffice - это две компоненты + подстройка для MSSQL, чтобы вы могли указать русский язык через интерфейс администратора.
Внутри MSSEARCH все хранится в Unicode. WordBreaker, как правило, ничего не портит - нейтрален для других языков. Вопрос состоит в том, как вызвать нужный Stemmer, то есть указать язык, на котором вы делаете запрос.
Например, в Indexing Services можно указывать язык запроса - там, видимо, поднимается нужный Stemmer. Догадайтесь, какой язык запроса будет в MSSQL. Конечно, тот, что был указан при построении индекса.
Если нужно искать на двух языках в MSSQL, первое, что приходит в голову, это
либо написать Stemmer, который бы воспринимал все неизвестные слова, как слова дополнительного языка и анализировал бы их (альтернатива - вызов готового Stemmer'а),
либо создать поле, дублирующее исходное, построить по нему индекс на втором языке (по одному полю, по-моему, нельзя построить два индекса), а при запросах искать по обоим полям и объелинять результаты. |
|
|
Pig |
08.01.04, 17:01 |
|
re: re: Поиск на разных языках MSSQL2000 |
|
А можно создавать два индекса, один на русском, другой на английском? |
|
|
Плешко Владимир |
12.01.04, 14:54 |
|
re: re: re: Поиск на разных языках MSSQL2000 |
|
В документации (SQL Server Books online) написано, что с таблицей можно связать только один полнотекстовый индекс. |
|
|
PiG |
29.02.04, 20:51 |
|
re: re: re: re: Поиск на разных языках MSSQL2000 |
|
>В документации (SQL Server Books online) написано, что с таблицей можно связать только один полнотекстовый индекс.
А чего они пишут, что могут сразу на 2х языках искать?
http://www.medialingua.ru/sledopyt_sql.html
|
|
|
Плешко Владимир |
01.03.04, 19:13 |
|
re: re: re: re: re: Поиск на разных языках MSSQL2000 |
|
>А чего они пишут, что могут сразу на 2х языках искать?
Видимо, сделали это: "либо написать Stemmer, который бы воспринимал все неизвестные слова, как слова дополнительного языка и анализировал бы их (альтернатива - вызов готового Stemmer'а)" |
|
|
|
|
|
| |