У системы полнотекстового поиска Sphinx много сильных сторон. Одна из них — индексы в реальном времени.
При помощи этой функции можно “на лету” обновлять поисковые индексы, так что поисковая база всегда будет в актуальном состоянии.
RT-индексы пригодятся в том случае, когда БД уже проиндексирована, но в нее нужно в реальном времени вносить новые/обновленные или удалять несуществующие данные. Они хранятся в оперативной памяти в отдельном чанке. При его заполнении данные переносятся на диск, а ОЗУ очищается.
Real time индексы подходят для быстро и часто изменяемой информации, но это не самое лучшее решение для длительного хранения больших объемов данных. Так что оптимальным решением будет задание основного индекса, в котором будут содержаться все записи (или с определенного момента), и который перестраивается, скажем, раз в сутки, а также RT-индекса с новыми данными.
В целом, объявление всех необходимых настроек присутствует в материале об индексации больших объемов данных в Sphinx, поэтому приведем лишь кусочек кода:
index product_index { source = product_shop path = /var/data/product_shop charset_type = utf-8 }
#Индексация таблицы product_shop
После добавления основного индекса, в файл конфигурации sphinx.conf нужно добавить RT-индекс:
index product_rt { type = rt path = /var/data/product_rt # Описание всех полей для индексирования rt_field = title rt_field = content #Описание атрибутов rt_attr_uint = added rt_attr_uint = product # Размер чанка для RT rt_mem_limit = 256M }
#Объявление RT-индекса с описанием полей индексации и атрибутов
Обратите внимание на директиву rt_mem_limit. Тестирование производительности Sphinx показывает, что высокое значение лимита памяти (от 256 МБ и выше для больших БД) существенно улучшает скорость поиска и обновления индекса. Таким образом можно уменьшить количество дисковых фрагментов RT на диске для повышения производительности при большом количестве операций чтения/записи. Sphinx находится в активной разработке, так что оптимизации обязательно появятся в следующих версиях.
Теперь осталось объединить оба индекса, проприсав нужную конфигурацию все в том же файле sphinx.conf:
index product { type = distributed local = product_index local = product_rt }
#Объявление распределенного индекса, который объединяет основной и RT индексы
После этого не забудьте перезапустить индексацию и демон searchd.
Real Time индексация в Sphinx позволяет обновлять БД буквально на лету без необходимости частой переиндексации всех данных.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…