Снегопат https://snegopat.ru/forum/ |
|
Полнотекстовый поиск по модулям конфигурации https://snegopat.ru/forum/viewtopic.php?f=3&t=690 |
Страница 1 из 4 |
Автор: | orefkov [ 22 окт 2015, 11:22 ] | ||
Заголовок сообщения: | Полнотекстовый поиск по модулям конфигурации | ||
Прошу заценить концепцию, а также вообще нужность такого скрипта. Скрипт разработан под snegopat.reborn и запускаться должен в нём. Принцип работы - первоначально заполняется текстами модулей база полнотекстового поиска, реализованная на sqlite. Довольно продолжительная операция, на средних по размеру конфигурациях до 5 минут. Зато потом полнотекстовый поиск выполняется практически мгновенно. Полнотекстовый поиск разбивает текст на отдельные слова и может искать только по границам слов. Т.е нельзя искать например конец одного слова и начало другого, также как и по символам, например, '.' '(' ',' и т.п. Поиск может выполнятся в двух режимах - полнотекстовый и обычный. В полнотекстовом можно искать целыми словами, либо началами слов, добавив в конце символ *. Например, "типыск*" и т.п. В обычном выполняется поиск с помощью оператора sql LIKE, и можно искать точное соответствие с любой частью строки, включая любые символы. Кроме того, можно использовать метасимволы: % - совпадение с любым количеством символов и _ - совпадение с любым символом. Для поиска самих % и _ - перед ними надо вставлять символ $. Обычный поиск выполняется медленнее полнотекстового. Пока не реализовано отслеживание изменения метаданных для поддержания актуальности базы поиска, но в-принципе реализуемо. Можно добавить и поиск по файлам. Стоит ли развивать? Востребован ли такой функционал?
|
Автор: | ildary [ 22 окт 2015, 21:36 ] |
Заголовок сообщения: | Re: Полнотекстовый поиск по модулям конфигурации |
Мне такой функционал кажется интересным, потому что обычный поиск очень медленный. Было бы классно добавить такую штуку, как принудительное обновление базы текста. |
Автор: | Magister [ 23 окт 2015, 00:11 ] |
Заголовок сообщения: | Re: Полнотекстовый поиск по модулям конфигурации |
Возможно, лучше посмотреть в сторону https://www.sqlite.org/fts3.html для полнотекстового поиска? Правда, не знаю как там с кириллицей |
Автор: | orefkov [ 23 окт 2015, 01:19 ] |
Заголовок сообщения: | Re: Полнотекстовый поиск по модулям конфигурации |
Magister писал(а): Возможно, лучше посмотреть в сторону https://www.sqlite.org/fts3.html для полнотекстового поиска? Правда, не знаю как там с кириллицей так именно это и юзается. Создается sqlite база, в ней fts4 таблица. Токенизатор используется unicode61, так что всё в порядке с кириллицей. |
Автор: | JohnyDeath [ 23 окт 2015, 04:18 ] |
Заголовок сообщения: | Re: Полнотекстовый поиск по модулям конфигурации |
А как вообще планируешь обновлять базу полнотекстового поиска? При каждом изменении нужно перестраивать всю базу или можно как-то только измененное обновить? |
Автор: | orefkov [ 23 окт 2015, 07:02 ] |
Заголовок сообщения: | Re: Полнотекстовый поиск по модулям конфигурации |
Надо будет отлавливать события метаданных, и обновлять только изменившиеся модули. То есть длительным будет только первое заполнение. Для внешних файлов еще проще - сравнивать время модификации. Но эту часть я еще не сделал. |
Автор: | JohnyDeath [ 23 окт 2015, 09:47 ] |
Заголовок сообщения: | Re: Полнотекстовый поиск по модулям конфигурации |
А начальное заполнение (как и последующее обновление) можно сделать в фоне? |
Автор: | JohnyDeath [ 24 окт 2015, 20:12 ] |
Заголовок сообщения: | Re: Полнотекстовый поиск по модулям конфигурации |
Очень крутая штука получилась. Скорость даже немного пугает ) Не хватает только динамического дообновления (желательно в фоне). |
Автор: | shentsev [ 26 окт 2015, 07:06 ] |
Заголовок сообщения: | Re: Полнотекстовый поиск по модулям конфигурации |
+1 |
Автор: | syuzyov [ 28 окт 2015, 09:26 ] |
Заголовок сообщения: | Re: Полнотекстовый поиск по модулям конфигурации |
Отличная штука получилась, по-моему ищет быстрее, чем успеваешь писать |
Страница 1 из 4 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |