powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / SQLite быстрый неполнотекстный поиск с русскими символами
2 сообщений из 2, страница 1 из 1
SQLite быстрый неполнотекстный поиск с русскими символами
    #39341841
Maximus1010101
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, как в SQLite можно организовать регистронезависимый поиск? Нужно настроить неполнотекстовый поиск, чтобы можно было искать по части слова. Сейчас программа построена на System.Data.SQLite.dll использую оператор Like и переопределенный оператор Lower(), т.к. стандартная функция не умеет работать с русскими символами, получился запрос select * from myTable where Lower(myColumn) Like '%текст%'. Все замечательно работает, но при этом поиск выполняется очень долго и по базе размером в ~ 20-50 тыс. строк поиск может выполняться секунд 5. Наткнулся на статьи в которых пишется про ICU, что для нормального поиска по русским символам нужно использовать библиотеку SQLite со встроенной ICU. На официальном сайте нашел библиотеку Sqlite3.dll но по умолчанию она тоже не поддерживает русский. Нашел кучу библиотек SQLite3.dll с поддержкой русских символов со встроенной ICU, но ни одну не получилось подключить, при попытке обращения к ней приложение виснет. Подскажите как еще можно настроить регистронезависимый поиск с русскими символами на SQLite чтобы сократить время запроса? Или может кто-нибудь поделится собранной рабочей библиотекой с поддержкой ICU?
...
Рейтинг: 0 / 0
SQLite быстрый неполнотекстный поиск с русскими символами
    #39385042
amsdev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вероятно нужно самостоятельно собрать Sqlite + ICU.

Далее, по умолчанию LIKE в sqlite регистронезависимый, чтобы был быстрый поиск нужно создать NOCASE индексы для нужных полей. Тогда поиск будет быстрый, но при этом у меня начинал жестко тормозить ORDER BY правда возможно что это был мой косяк в другом месте. Скажем так, вам стоит протестировать скорость работы ORDER BY с NOCASE индексами. Либо создать и NOCASE и обычный индексы для нужных полей.

Другой враиант собрать sqlite с опцией case_sensitive_like или сделать PRAGMA case_sensitive_like = true - тогда поиск будет быстрым с обычными индексами, но при этом регистрозависимым.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / SQLite быстрый неполнотекстный поиск с русскими символами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]