Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Установка и настройка Sphinx

Читайте также:
  1. Ветроэнергетическая установка роторного типа с улучшенными экологическими характеристиками.
  2. Воздуходувная установка
  3. Выбор и установка пакетов
  4. Группа 11 Установка анкерных болтов
  5. Группа 12 Установка в одноэтажных зданиях стропильных и подстропильных балок и ферм
  6. Группа 14 Укладка плит покрытий, установка опорных стаканов для вентиляционных
  7. Группа 16 Установка панелей наружных стен одноэтажных зданий

Sphinx – полнотекстовая поисковая система, свободно распространяемая под GPL версией 2. Коммерческое лицензирование предоставляется по запросу.

Технически, Sphinx – автономный пакет программ, который обеспечивает быструю и полнотекстовую функциональность поиска приложениям-клиентам. Это было разработано, чтобы легко объединяться с базами данных SQL, хранящими данные и для простого доступа скриптовых языков. Однако Sphinx не требует, чтобы какая-либо определенная база данных функционировала.

Приложения могут получить доступ к демону поиска Sphinx (searchd) использующий любой из трех различных методов доступа:

1) через собственную реализацию протокола сети MySQL (использующий маленькое подмножество SQL под названием SphinxQL, это рекомендуется разработчиками);

2) через нативный API поиска (SphinxAPI);

3) через сервер MySQL с подключаемым двигателем хранения (SphinxSE).

Ключевые особенности Sphinx:

1) высокая производительность индексации и поиска;

2) доказанная масштабируемость до миллиардов документов, терабайты данных и тысячи запросов в секунду;

3) продвинутые индексация и инструменты запросов (гибкий и многофункциональный текстовый лексер, язык запросов, несколько различных способов ранжирования, и т.д.);

В настоящее время распределеннный архив Sphinx включает в себя следующее программное обеспечение:

1) индексатор (indexer): утилита, которая создает полнотекстовые индексы;

2) searchd: демон, который позволяет внешнему программному обеспечению (например, веб-приложению) искать по полнотекстовым индексам;

3) sphinxapi: набор searchd клиентских API библиотек для популярных скриптовых веб-языков (PHP, Python, Perl, Ruby).

4) spelldump: простой инструмент командной строки для извлечения элементов из ispell или MySpell словаря форматов, чтобы помочь настроить ваш индекс для использования его со словоформами.

5) indextool: утилита, необходимая, чтобы сбросить различную отладочную информацию об индексе (добавлено в 0.9.9-rc2 версии).

6) wordbreaker: утилита для разбиения сложных слов на отдельные (добавлено в версии 2.1.1). [ссылка на док-ю]

Экспорт данных из MongoDB в MySQL. Чтобы воспользоваться SphinxAPI, c помощью скрипта была создана таблица objects в базе данных museums в MySQL, содержащая поля _id (идентификатор объекта), name (имя объекта), brief (краткое описание объекта), full (полное описание объекта) и поле id типа AUTO_INCREMENT для числового уникального id строки таблицы.

Ниже приведен листинг кода:

mongoexport --db museums --collection objects --csv --fields _id, name, brief, full --out objects.csv

mysqladmin -u root -p drop museums

mysqladmin -u root -p create museums

mysql -u root -p museums -e 'create table objects (id MEDIUMINT NOT NULL AUTO_INCREMENT, _id VARCHAR(100), brief VARCHAR(10000), name VARCHAR(100), full VARCHAR(100000), primary key (id));'

mysqlimport -u root -p --local --fields-optionally-enclosed-by='"' --fields-terminated-by=',' --lines-terminated-by='\n' --ignore-lines=1 --columns=_id,brief,name,full museums objects.csv

Данный скрипт, создающий базу данных, доступен по адресу:

https://bitbucket.org/osll/museums-indexer/src/export_csv.sh

Установка Sphinx. Sphinx индексирует источники данных в соответствии с определениями, содержащимися в файле sphinx.conf. В официальной документации есть ссылка на файл настроек [11] для различных типов данных и различных потребностей пользователя. Этот файл содержит примеры возможных настроек с комментариями. Ввиду малой информативности и стандартного набора настроек опустим содержание index objects, indexer, searchd.

Пример настройки indexer source objects:

indexer source objects {

type = mysql

sql_host = 127.0.0.1

sql_user = root

sql_pass =

sql_db = museums

sql_port = museums

sql_query_pre = SET NAMES utf-8

sql_query = SELECT * FROM objects

sql_attr_uint = name

sql_query_info = SELECT * FROM objects WHERE id=$id

}

Опция sql_query_info определяет формат вывода: какие найденного объекта будут напечатаны.

Также в searchd была добавлена строчка

listen = localhost:museums:mysql41.

Настройка listen указывает, что Sphinx будет использовать порт 3307 (это же указано и в sql_port) и протокол mysql. Такой порт был выбран при импортировании таблицы в MySQL.

Для возможности поиска на русском языке необходимо указать следующее:

1. utf-8 в sql_query_pre;

2. morphology = stem_enru, libstemmer_ru в настройке index;

3. charset_type = utf-8 в настройке index;

4. настроить charset_table.

Использование протокола mysql позволяет подключаться к Sphinx как к обычной базе данных MySQL.

Для работы с кодировкой utf-8 необходимо, чтобы:

1. Данные из MySQL приходили индексатору в UTF-8.

2. В конфигурационном файле Sphinx был прописан тип кодировки UTF-8.

3. В конфигурационном файле Sphinx была прописана правильная опция charset_table для UTF-8 (настройка данной опции можно посмотреть в документации, в данной работе она не приводится ввиду большого объема).

4. Запрос должен приходить UTF-8.

Соответственно, база данных, созданная в mysql должна быть в данной кодировке.

Для первоначальной индексации в консоли запустим команду:

sudo indexer objects

Если необходимо проиндексировать таблицу во второй раз, используется следующая команда:

sudo indexer –rotate –all

или

sudo indexer –rotate objects

Для поиска в консоли есть утилита «search»:

search –config /home/sphinx/sphinx.conf

Для запуска демона поиска необходимо использовать команду:

searchd –config /home/sphinx/sphinx.conf

Чтобы запустить консольный клиент и подключиться к Sphinx, откроем командную строку и введём команду:

mysql -u root -p museums

В последнем случае, при работе через MySQL протокол, Sphinx поддерживает обычный SQL-синтаксис. Существуют некоторые ограничения, однако могут быть использованы многие поисковые запросы.

Пример работы с Sphinx в консоли (если опустить ключ q, вывод запроса будет подробным и будет включать все индексированные поля):

search -q "Кантеле"

Sphinx 2.0.4-id64-release (r3135)

Copyright (c) 2001-2012, Andrew Aksyonoff

Copyright (c) 2008-2012, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file '/etc/sphinxsearch/sphinx.conf'...

index 'objects': query 'кантеле ': returned 12 matches of 12 total in 0.000 sec

displaying matches:

1. document=730, weight=2815, name=0

2. document=769, weight=2805, name=0

3. document=522, weight=2773, name=0

4. document=169, weight=2742, name=0

5. document=2053, weight=1712, name=0

6. document=338, weight=1654, name=0

7. document=593, weight=1654, name=0

8. document=1094, weight=1654, name=0

9. document=1155, weight=1654, name=0

10. document=1358, weight=1654, name=0

11. document=1739, weight=1654, name=0

12. document=2034, weight=1654, name=8

words:

1. 'кантел': 12 documents, 44 hits

Sphinx назначает «вес» каждому результату поиска, который показывает релевантность найденного объекта. Чем больше вес, тем соответственно выше релевантность. Данную характеристику можно использовать при вычислении баллов близости при сравнении полей «Тэги», и данный способ не будет обладать нынешним недостатком вычисления: отсутствием учета семантики тэгов.


Дата добавления: 2015-10-16; просмотров: 208 | Нарушение авторских прав


Читайте в этой же книге: Введение | Обзор существующих алгоритмов подбора рекомендаций | Разработка функции отображения похожести для слабоструктурированных объектов | Описание системы | Разработка компонента кэширования рекомендаций | Предоставление пользовательского интерфейса получения рекомендаций | Исследование точности построения рекомендаций | Область применения | Термины и определения | Требования к дисплею |
<== предыдущая страница | следующая страница ==>
Типы рекомендаций| Ранжирование в Sphinx

mybiblioteka.su - 2015-2024 год. (0.009 сек.)