Your SlideShare is downloading. ×
  • Like
Sphinx
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Sphinx

  • 674 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
674
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
8
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Египетская сила! Sphinxпоисковый движок
  • 2. Египетская сила! Sphinx Преимущества● быстрый● open source● не требует дополнительного ПО● специально снабжён возможностью хорошего взаимодействия с базами данных SQL● SphinxQL
  • 3. Египетская сила! Sphinx Недостатки ● “монолитные” индексы ● отсутствие документации на русском
  • 4. Египетская сила! Sphinx Возможности● высокая скорость индексации(до 10 MB/сек на современных процессорах)● высокая скорость поиска (средний запрособрабатывается менее 0.1 секунды на 2-4 GBтекстовых коллекциях)● обеспечивает хорошую релевантность путемсочетания ранжирования похожих фраз и статистикиранжирования● поддержка одновременно нескольких дополнительныхатрибутов для каждого документа (группы, временныеметки и т.д.)
  • 5. Египетская сила! Sphinx Немного статистики ~3.5 миллиона записей, ~5 GB текста(из Wikipedia) MySQL Lucene SphinxИндексация, min 1627 176 84Индекс, MB 3011 6328 2850Скорость поиска, ms/q 286 30 22
  • 6. Египетская сила! Sphinx Установка (*nix)1. Распаковать2. $ ./configure3. $ make4. $ make install
  • 7. Египетская сила! Sphinx и что дальше?Sphinx состоит из трех компонентов:генератор индекса, поисковая система и поисковая утилита,работающая в командной строке:● Генератор индекса (indexer). Он выполняет запросык базе данных, индексирует каждую колонку в каждойстроке результата и привязывает каждую запись индексак первичному ключу строки.● Поисковая система представляет собой демон, которыйназывается searchd.● Удобная утилита search позволяет выполнять поискиз командной строки без написания кода.
  • 8. Египетская сила! Sphinx Настройка /usr/local/etc/sphinx.conf● источники (source)● индексы (index)● конфиг демона (searchd)
  • 9. Египетская сила! Sphinx Немного практики
  • 10. Египетская сила! Sphinx sourсesource Post{ type = mysql sql_host = localhost sql_user = sphinx sql_pass = 123123 sql_db = test sql_sock = /tmp/mysql/mysql.sock sql_port = 3306 sql_query = SELECT id, userId, threadId, title, text FROM Posts; sql_query_range = SELECT MIN(id), MAX(id) FROM Posts sql_range_step = 500 sql_query_pre = SET NAMES utf8 sql_field_string = text}
  • 11. Египетская сила! Sphinx indexindex Post{ type = rt path = /mnt/data/Post rt_field = title rt_field = text rt_attr_string = _title rt_attr_string = _text rt_attr_uint = threadId rt_attr_uint = userId morphology = stem_enru}
  • 12. Египетская сила! Sphinx searchdSearchd{ listen = localhost:3307:mysql41 port = 3312 log = /etc/sphinx/searchd.log query_log = /etc/sphinx/query.log pid_file = /etc/sphinx/searchd.pid}
  • 13. Египетская сила! Sphinx МорфологияСтемминг – это процесс ведущий к выделениюосновы слова из сложных словоформ.в sphinx.conf#подключение русского и английского стеммингаmorphology = stem_enru
  • 14. Египетская сила! Sphinx оно работает?$ sudo /usr/local/bin/indexer --rotate --allusing config file /usr/local/etc/sphinx.conf...indexing index Post...collected 8 docs, 0.0 MBsorted 0.0 Mhits, 82.8% donetotal 8 docs, 149 bytestotal 0.010 sec, 14900.00 bytes/sec, 800.00 docs/sec$ /usr/local/bin/search Helloindex Post: query wind : returned 2 matches of 2 total in0.000 sec
  • 15. Египетская сила! Sphinx Sphinx APIЗапускаем демона сфинкса //Задаем полям веса, для подсчета$ /usr/local/sphinx/bin/searchd релевантности $w = array (title => 20, text => 10);<?php $sphinx->SetFieldWeights($w);require ( "sphinxapi.php" ); $result = $sphinx->Query($search, Post);$search = $_GET[search]; if ($result && is_array($result[matches]))$sphinx = new SphinxClient(); {$sphinx->SetServer(localhost, 3312); //Получаем массив ID найденых сообщений//Совпадение любого из слов $ids = array_keys($result[matches]);$sphinx->SetMatchMode(SPH_MATCH_ANY); //А теперь выводим эти сообщения отсортированные по релевантности//Результаты отсортированы по $id_list = implode(,, $ids);релевантности $sql = SELECT * FROM `post` WHERE `id`$sphinx- IN ($id_list) ORDER BY FIELD(`id`,$id_list);>SetSortMode(SPH_SORT_RELEVANCE); }
  • 16. Египетская сила! Sphinx SphinxQL1) SELECT * FROM Post LIMIT 1,22) SELECT * FROM Post WHERE threadId = 13) SELECT * FROM Post WHERE match(art) ORDER BY@weight DESC4) SELECT _title FROM Post WHERE match(@title art)
  • 17. Египетская сила! SphinxСравнение SphinxAPI и SphinxQL
  • 18. Египетская сила! Sphinx Ура? 1. Установили Sphinx 2. Настроили 3. .... 4. Вопросы? Аплодисменты!