Sphinx Search - это мощный и быстрый полнотекстовый поисковик, который может быть использован для поиска по большим объемам данных. В этой статье мы рассмотрим пример конфигурации для Sphinx Search на примере поиска товаров в интернет-магазине.
Перед тем как начать работу с Sphinx Search, необходимо установить его на сервер. Для этого можно воспользоваться менеджером пакетов вашей операционной системы или загрузить его с официального сайта.
После установки необходимо создать конфигурационный файл sphinx.conf, который будет содержать настройки индексации и поиска. В нашем примере, мы будем искать товары по названию и описанию, поэтому необходимо создать индекс для каждого из этих полей.
Пример конфигурационного файла:
source products
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = password
sql_db = mydatabase
sql_port = 3306
sql_query = \\
SELECT id, name, description \\
FROM products
sql_attr_uint = category_id
}
index products_index
{
source = products
path = /var/lib/sphinxsearch/data/products_index
docinfo = extern
morphology = stem_enru
min_word_len = 3
charset_type = utf-8
min_infix_len = 2
enable_star = 1
expand_keywords = 1
html_strip = 1
html_remove_elements = style, script
html_remove_entities = 1
html_index_attrs = class, title, alt
stopwords = /etc/sphinxsearch/stopwords.txt
}
searchd
{
listen = 9312
listen = 9306:mysql41
log = /var/log/sphinxsearch/searchd.log
query_log = /var/log/sphinxsearch/query.log
read_timeout = 5
max_children = 30
pid_file = /var/run/searchd.pid
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
workers = threads
binlog_path = /var/lib/sphinxsearch/data
}
В данном примере мы создаем источник данных products, который будет использовать базу данных MySQL для получения данных. Мы указываем хост, пользователя, пароль, базу данных и порт для подключения к MySQL. В sql_query мы указываем запрос, который будет извлекать необходимые поля из таблицы products. Также мы указываем атрибут category_id, который будет использоваться для фильтрации результатов по категории товаров.
Далее мы создаем индекс products_index, который будет использовать источник данных products. Мы указываем путь, по которому будут храниться данные индекса, а также настройки индексации и поиска. В данном примере мы используем stem_enru для морфологического анализа слов, utf-8 для кодировки, а также указываем минимальную длину слова, минимальную длину внутреннего фрагмента и настройки для поиска с использованием звездочки.
Наконец, мы настраиваем searchd, который будет запускаться как демон и обрабатывать запросы на поиск. Мы указываем порт, на котором будет слушать сервер, путь для логирования, настройки для запуска в нескольких потоках и другие параметры.
После настройки Sphinx Search, можно запустить сервер и проиндексировать данные. Для этого можно использовать команды:
sudo searchd
sudo indexer --all --rotate
После этого можно выполнять поиск с использованием клиента Sphinx Search, например, с помощью библиотеки SphinxAPI для PHP:
require_once('sphinxapi.php');
$cl = new SphinxClient();
$cl->SetServer('localhost', 9312);
$result = $cl->Query('product name', 'products_index');
В данном примере мы ищем товары, у которых в названии или описании есть слово 'product name'. Результатом запроса будет массив с найденными товарами.
Sphinx Search - это мощный инструмент для поиска по большим объемам данных. В этой статье мы рассмотрели пример конфигурации для поиска товаров в интернет-магазине, но его можно использовать и для других задач. Надеюсь, этот пример поможет вам настроить Sphinx Search для ваших нужд.
menuзакрыть
Спасибо! Заявка отправлена. Свяжемся с вами в течении часа!