|
Форум
|
nick |
30.01.06, 15:47 |
|
Есть ли возможность подключить поиск русских слов в utf-8? |
|
а поиск по русски для MSSQL'a работает только в кодировке 1251? А если данные в формате utf-8? Как должен выглядеть запрос в таком случае? |
|
|
Плешко Владимир |
01.02.06, 13:19 |
|
re: Есть ли возможность подключить поиск русских слов в utf-8? |
|
Дело здесь вовсе не в запросе. Запрос пишется в кодовой странице клиента. Затем при поступлении в mssql он преобразуется в кодовую страницу базы (в соответствии с collation). Далее запрос преобразуется в unicode и передается в mssearch. Таким образом, если текст корректно проиндексировался mssearch, то не важно, в какой он был кодировке.
Теперь об utf-8...
В mssql2000 способ хранения данных определяется параметром collation (кодовая страница, сортировки и т.д.). При индексации mssearch преобразует текст из кодовой страницы базы в unicode. Далее, исходя из языка колонки использует соответствующие лингвистические компоненты (например, rco for backoffice).
Текст в mssql можно хранить либо в кодовой странице базы (varchar, text), либо в unicode (в бинарном представлении, а не текстовом - utf) (nvarchar, ntext). Т.е. в процессе индексации utf будет интерпретироваться просто как ascii последовательность символов.
Что-то находиться конечно будет, даже можно каверкать запросы, чтобы находить слова как есть. Но об учете словоформ при поиске речи быть не может.
Попробуйте почитать документацию к mssql2005. Там появился тип колонки XML. И вроде как есть стыковка с mssearch. Но там, по-моему, используется utf-16. Т.е. конвертировать документы придется. А если конвертировать, то можно и в обычный unicode или в 1251 :-)
Напоследок замечу, что в oracle utf-8 поддерживается. Как вариант можете рассмотреть использование rco for oracle :-) |
|
|
|
|
|
| |