Снегопат

Обсуждение Снегопата
Текущее время: 28 сен 2022, 02:26

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: 22 окт 2015, 11:22 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Прошу заценить концепцию, а также вообще нужность такого скрипта.
Скрипт разработан под snegopat.reborn и запускаться должен в нём.
Принцип работы - первоначально заполняется текстами модулей база полнотекстового поиска, реализованная на sqlite.
Довольно продолжительная операция, на средних по размеру конфигурациях до 5 минут.
Зато потом полнотекстовый поиск выполняется практически мгновенно.
Полнотекстовый поиск разбивает текст на отдельные слова и может искать только по границам слов.
Т.е нельзя искать например конец одного слова и начало другого, также как и по символам, например, '.' '(' ',' и т.п.

Поиск может выполнятся в двух режимах - полнотекстовый и обычный.
В полнотекстовом можно искать целыми словами, либо началами слов, добавив в конце символ *.
Например, "типыск*" и т.п.

В обычном выполняется поиск с помощью оператора sql LIKE, и можно искать точное соответствие с любой частью строки, включая любые символы.
Кроме того, можно использовать метасимволы: % - совпадение с любым количеством символов и _ - совпадение с любым символом.
Для поиска самих % и _ - перед ними надо вставлять символ $.
Обычный поиск выполняется медленнее полнотекстового.

Пока не реализовано отслеживание изменения метаданных для поддержания актуальности базы поиска, но в-принципе реализуемо.
Можно добавить и поиск по файлам.

Стоит ли развивать? Востребован ли такой функционал?


Вложения:
qs.zip [7.99 КБ]
Скачиваний: 493
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 окт 2015, 21:36 
Не в сети

Зарегистрирован: 31 авг 2011, 17:21
Сообщения: 79
Мне такой функционал кажется интересным, потому что обычный поиск очень медленный. Было бы классно добавить такую штуку, как принудительное обновление базы текста.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 окт 2015, 00:11 
Не в сети

Зарегистрирован: 04 июн 2012, 09:28
Сообщения: 343
Возможно, лучше посмотреть в сторону https://www.sqlite.org/fts3.html для полнотекстового поиска? Правда, не знаю как там с кириллицей

_________________
В реальності все не так, як насправді


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 окт 2015, 01:19 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Magister писал(а):
Возможно, лучше посмотреть в сторону https://www.sqlite.org/fts3.html для полнотекстового поиска? Правда, не знаю как там с кириллицей

так именно это и юзается.
Создается sqlite база, в ней fts4 таблица. Токенизатор используется unicode61, так что всё в порядке с кириллицей.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 окт 2015, 04:18 
Не в сети

Зарегистрирован: 24 авг 2011, 15:32
Сообщения: 722
А как вообще планируешь обновлять базу полнотекстового поиска? При каждом изменении нужно перестраивать всю базу или можно как-то только измененное обновить?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 окт 2015, 07:02 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Надо будет отлавливать события метаданных, и обновлять только изменившиеся модули. То есть длительным будет только первое заполнение. Для внешних файлов еще проще - сравнивать время модификации. Но эту часть я еще не сделал.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 окт 2015, 09:47 
Не в сети

Зарегистрирован: 24 авг 2011, 15:32
Сообщения: 722
А начальное заполнение (как и последующее обновление) можно сделать в фоне?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 окт 2015, 20:12 
Не в сети

Зарегистрирован: 24 авг 2011, 15:32
Сообщения: 722
Очень крутая штука получилась. Скорость даже немного пугает )
Не хватает только динамического дообновления (желательно в фоне).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 окт 2015, 07:06 
Не в сети

Зарегистрирован: 25 авг 2011, 13:12
Сообщения: 32
+1


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 окт 2015, 09:26 
Не в сети

Зарегистрирован: 28 окт 2015, 08:17
Сообщения: 36
Отличная штука получилась, по-моему ищет быстрее, чем успеваешь писать :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB