четверг, 29 октября 2009 г.

SQLite и ICU

В течении достаточно продолжительного времени я использовал легковесную реализацию базового юникода для SQLite взамен апстримовской ICU-зависимой. Но некоторое время назад перешел на ICU, поскольку на современном оборудовании, к примеру, core quad, овчинка не стоит выделки. Кроме того, в дебиане наконец-то положительно решили вопрос, по которому я давно пинал мантейнера пакета sqlite:

sqlite3: Case-insensitive matching of Unicode characters does not work because ICU extension not compiled.

Теперь в debian стало возможным разрабатывать интернациональные проекты с использованием SQLite.

Возможно, еще стоит потрясти мантейнера на предмет добавления пакета с анализатором, который давно есть в моей сборке. Насчет патчей расширения функциональности надеяться не приходится - тут мантейнер сразу "посылает" в апстрим, а вот патч - решение проблемы с биндингом переменных в tcl-интерфейсе было бы полезным добавить. Что интересно, апстрим рекомендует всем заинтересованным пользователям иметь свою собственную сборку, а дебиановский мантейнер таковой поддерживать не хочет ;-)

Как следствие из вышеизложенного, в ближайшее время, полагаю, воспользуюсь полнотекстовым поиском FTS3, который после утрясания проблем с юникодом становится вполне себе удобным подручным инструментом. В свое время общение с разработчиком этого модуля привело к мысли о том, что фильтры, удаление стоп-слов и стемминг придется делать внешними средствами. Не совсем оно удобно, но, тем не менее, вполне реализуемо. Давно обещана возможность создания внешнего токенайзера, но воз и поныне там. Писать же свой модуль по моим прикидкам нецелесообразно, поскольку задачи сильно зависят от проекта, а тратить на это много времени нет возможности. Разве что напомнить апстримовскому разработчику об этом обещании, глядишь, и займется реализацией.

Что касается операционной системы, в которой живут самые обделенные в мире пользователи, то сборку libICU я выкладывал, и собрать с ней SQLite совсем нетрудно. Впрочем, я выкладывал и уже собранный SQLite+ICU, но лучше все же использовать последнюю апстримовскую версию СУБД.

Upd.

В рассылке подсказывают, что внешний токенайзер можно добавить. Сишный давно можно, а меня интересует произвольный - тиклевый или любой другой. Или я неправильно понял девелопера и эта возможность не предвидится, или я неправильно понял исходники :-)

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


(C) Alexey Pechnikov aka MBG, mobigroup.ru