Яндекс сервер для mysql

Два дня мучений, поисков и попыток сделать индексацию СУБД MySQL средствами Яндекс Сервер увенчались успехом. Настраивать пришлось на разных 2х машинах и 2х различных дистрибутивах Linux. Как ни странно, при одинаковой настройке были различные результаты. Основная проблема заключалась в отсутствии возможности явно указывать кодировку при подключении базы данных MySQL индексатором Yandex.Server. Было найдено 2 пути решения проблемы:


  1. использовать ODBC в качестве прослойки между Yandex.Server и MySQL (получилось в Mandriva Linux 2009.0)
  2. вывод данных из базы в виде бинарных строк с помощью конструкции CONVERT(CONVERT(some_field USING utf8),BINARY) (получилось в Debian, с ипользованием подключения через ODBC, теоретически работает и на прямую)

По поводу второго варианта вроде бы всё понятно - главное на все поля с не английскими буковками ставить такое выражение (для соединения использовал ODBC с настройками кодировки uft8).

Рассмотрим второй вариант, который завелся на Mandriva Linux. Во первых нам надо установить unixodbc и библиотеки работы с MySQL через ODBC (libmyodbc). Затем редактируем файл /etc/odbcinst.ini и добавляем в него строки работы с библиотекой libmyodbc:

Для Mandriva Linux

[Mysql]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc3.so.1
Setup = /usr/lib/libmyodbc3S.so.1
FileUsage = 1

Для Debian ищем аналогичные имена в папке /usr/lib/odbc/ для Driver и Setup

Затем редактируем /etc/odbc.ini
[odbcds]
Driver = Mysql
DATABASE = mydb
OPTION = 4325384
PWD = 12345
PORT = 3306
SERVER = 127.0.0.1
UID = userlogin
CHARSET = utf8


можно воспользоваться графической утилитой или почитать http://dev.mysql.com/downloads/connector/odbc/


Теперь редактируем файл yandex.cfg (/usr/local/etc/yandex/yandex.cfg) добавив в него новый источник (как добавлять и куда - RTFM /usr/local/share/yandex/yandex-server-manual.pdf)


<DataSrc id="odbcds">
Name : odbcds
Module : libydodbc2.so
Symbol : ODBC_DATASRC_LIB
<odbcds>
DataSourceName : odbcds
BaseName : mydb
UserName : userlogin
Password : 12345
DocQuery : SELECT id, field_1, field_2,... FROM some_table
DocFilter : WHERE id>0

MimeType : text/html
Template : /usr/local/etc/yandex/doc.html

</odbcds>

</DataSrc>


и создаем файл /usr/local/etc/yandex/doc.html в котором будет содержаться шаблон для вывода (снова /usr/local/share/yandex/yandex-server-manual.pdf).

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

Комментариев нет:

Отправить комментарий