|
SQLite быстрый неполнотекстный поиск с русскими символами
|
|||
---|---|---|---|
#18+
Здравствуйте, как в 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? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2016, 16:50 |
|
SQLite быстрый неполнотекстный поиск с русскими символами
|
|||
---|---|---|---|
#18+
Вероятно нужно самостоятельно собрать Sqlite + ICU. Далее, по умолчанию LIKE в sqlite регистронезависимый, чтобы был быстрый поиск нужно создать NOCASE индексы для нужных полей. Тогда поиск будет быстрый, но при этом у меня начинал жестко тормозить ORDER BY правда возможно что это был мой косяк в другом месте. Скажем так, вам стоит протестировать скорость работы ORDER BY с NOCASE индексами. Либо создать и NOCASE и обычный индексы для нужных полей. Другой враиант собрать sqlite с опцией case_sensitive_like или сделать PRAGMA case_sensitive_like = true - тогда поиск будет быстрым с обычными индексами, но при этом регистрозависимым. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2017, 17:37 |
|
|
start [/forum/topic.php?fid=54&tid=2008542]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
2ms |
others: | 282ms |
total: | 408ms |
0 / 0 |