Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Sphinxsearch 1.10Část 1 – základyhttp://sphinxsearch.com/docs/manual-1.10
Úvod• Fulltextové hledání• Linux daemon• Hlednání– TCP socket (9312)– SphinxQL – odnož sql jazyka– SphinxSE – ukladání ind...
DB• MySQL• PostgreSQL• ODBC– MS SQL– Oracle– atd.
• První pole určuje identifikátor řádku• Další pole sloupce pro hledání, pokud není určeno jinakID Pole1 Pole2 Pole31 Moni...
Konfigurace - Sourcesource [jmeno_indexu]{type = mysqlsql_host = hostsql_user = usersql_pass = passwordsql_db= dbsql_port ...
Konfigurace - Sourcetype - typ DBsql_host , sql_user, sql_pass, sql_db, sql_port – pripojeni k DBsql_query_pre – co provés...
Konfigurace - Indexindex [jmeno_indexu]{charset_type = utf-8charset_table = U+FF10..U+FF19->0..9, U+FF21..U+FF3A->a..z,U+F...
Konfigurace - Indexsource - zdroj dat indexupath - kam uložitenable_star - povolit wildcardsmorphology - zda upravit tvar ...
CLI• indexer [volby] [jmeno_indexu]– Indexer [jmeno_indexu]– Indexer --rotate [jmeno_indexu]– Indexer -- rotate --all• sea...
HledáníALL• výchozí nastavení• vrátí záznam pouze po shodě všech slov z předaného výrazu• SPH_MATCH_ANYANY• vrátí záznam p...
HledáníBoolean• Vrátí záznamy vyhovující schodě předaným výrazem• SPH_MATCH_BOOLEAN (&, |, - !)• SELECT id, pole1, pole2 F...
HledáníExtended• Vrátí záznamy vyhovující schodě předaným výrazem• SPH_MATCH_EXTENDED (&, |, - !) + plus „sphinx operatory...
Váha(relevance),TříděníVáha• Záleží na módu hledání– phrase rank– statistical rank• BOOLEAN - váha se neurčuje• ALL, PHRAS...
PHP API• sphinxapi - třída dodaná autorem– http://code.google.com/p/sphinxsearch/source/browse/trunk/api/?r=2014– http://s...
PHP API – příklad• require_once(“sphinxapi.php“);• $clCode = new SphinxClient();• $clCode->SetServer( “localhost“, 9312);•...
PHP API – příklad• $result_ids = array_key($resultCode[“matches“]);• $sql = “SELECT id,pole1,pole2 FROM tabulka WHERE id I...
Závěr• Dotazy …
Upcoming SlideShare
Loading in …5
×

Sphinxsearch by Pavel Severýn

547 views

Published on

Introduction to sphinxsearch API & how to

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Sphinxsearch by Pavel Severýn

  1. 1. Sphinxsearch 1.10Část 1 – základyhttp://sphinxsearch.com/docs/manual-1.10
  2. 2. Úvod• Fulltextové hledání• Linux daemon• Hlednání– TCP socket (9312)– SphinxQL – odnož sql jazyka– SphinxSE – ukladání indexu do samotné DB od 5.1• API pro PHP, Perl, Ruby, Java
  3. 3. DB• MySQL• PostgreSQL• ODBC– MS SQL– Oracle– atd.
  4. 4. • První pole určuje identifikátor řádku• Další pole sloupce pro hledání, pokud není určeno jinakID Pole1 Pole2 Pole31 Monitor Asus nejaka verze 100 Pobocka1 12 Asus Monitor verze 100 nejaka Pobocka2 03 Monitor Asus modra verze s puntíky Pobocka1 14 Monitor Asus modra verze s puntíky Pobocka2 1
  5. 5. Konfigurace - Sourcesource [jmeno_indexu]{type = mysqlsql_host = hostsql_user = usersql_pass = passwordsql_db= dbsql_port = 3306 # optional, default is 3306sql_query_pre = SET NAMES utf8sql_query = SELECT id, pole1, pole2, pole3 FROM tabulka;sql_attr_uint = pole3sql_query_info = SELECT id, pole1, pole2 FROM products WHERE id=$id}
  6. 6. Konfigurace - Sourcetype - typ DBsql_host , sql_user, sql_pass, sql_db, sql_port – pripojeni k DBsql_query_pre – co provést před indexacísql_query_post_index – co provést po indexacisql_query - dotaz k indexovánísql_attr_uint, sql_attr_bool, sql_attr_bigint, sql_attr_float – atributy k nastavení hledánísql_query_info – pouze pro CLIsql_ranged_throttle – pauza mezi generovanim SQL dotazu
  7. 7. Konfigurace - Indexindex [jmeno_indexu]{charset_type = utf-8charset_table = U+FF10..U+FF19->0..9, U+FF21..U+FF3A->a..z,U+FF41..U+FF5A->a..z, 0..9,A..Z->a..z, a..z atd...source = [jmeno_indexu]path = [cesta_k_souboru]enable_star = 1morphology = stem_czmin_word_len = 1min_prefix_len = 1min_infix_len = 1}
  8. 8. Konfigurace - Indexsource - zdroj dat indexupath - kam uložitenable_star - povolit wildcardsmorphology - zda upravit tvar uložených slov (psi, pes => pes )min_word_len - min. délka slova k indexacimin_prefix_len - min. délka předpony slova pro indexacimin_infix_len - zda indexovat části slova a jaký početstopwords - co neidexovat (stopwords = stopwords-cz.txt stopwords-en.txt)wordforms - zkratky (core 2 duo > c2d, procesor > c2d, ...)(wordforms = /usr/local/sphinx/data/wordforms.txt)prefix_fields - pro které sloupce zpracovat předpony (prefix_fields = pole1, pole2)infix_fields - pro které sloupce zpracovat části slov (infix_fields = pole1, pole2)
  9. 9. CLI• indexer [volby] [jmeno_indexu]– Indexer [jmeno_indexu]– Indexer --rotate [jmeno_indexu]– Indexer -- rotate --all• search [volby] [co_hledame]– search –i [jmeno_indexu] [vyraz]• -a = any• -p = phrase• -ext = extended• searchd - daemon• /etc/init.d/sphinx restart | start | stop– netstat -nat | grep 9312 (tcp 0 0 0.0.0.0:9312 0.0.0.0:* LISTEN)– telnet localhost 3312
  10. 10. HledáníALL• výchozí nastavení• vrátí záznam pouze po shodě všech slov z předaného výrazu• SPH_MATCH_ANYANY• vrátí záznam při libovolné shodě z předaného výrazu• SPH_MATCH_ALLPHRASE• Vrátí záznam při přesné schodě• SPH_MATCH_PHRASE
  11. 11. HledáníBoolean• Vrátí záznamy vyhovující schodě předaným výrazem• SPH_MATCH_BOOLEAN (&, |, - !)• SELECT id, pole1, pole2 FROM tabulka(nejaka | puntiky) – vrátí vše(nejaka & puntiky) – nevratí nic(monitor -pobocka1) – vrátí id 2,4ID Pole1 Pole2 Pole31 Monitor Asus nejaka verze 100 Pobocka1 12 Asus Monitor verze 100 nejaka Pobocka2 03 Monitor Asus modra verze s puntíky Pobocka1 14 Monitor Asus modra verze s puntíky Pobocka2 1
  12. 12. HledáníExtended• Vrátí záznamy vyhovující schodě předaným výrazem• SPH_MATCH_EXTENDED (&, |, - !) + plus „sphinx operatory“• Více na http://sphinxsearch.com/docs/manual-1.10.html#extended-syntax
  13. 13. Váha(relevance),TříděníVáha• Záleží na módu hledání– phrase rank– statistical rank• BOOLEAN - váha se neurčuje• ALL, PHRASE – součet jednotlivých vah nalezenych slov• ANY – stejně jako ALL ale navíc se bere v úvahu váha jednotlivých sloupců• EXTENDED – podobně jako ANY, plus se bere v úvahu výsledek váha algoritmu BM25Třídění• Relevance• Definovaného atributu• Času• Matematického výrazu
  14. 14. PHP API• sphinxapi - třída dodaná autorem– http://code.google.com/p/sphinxsearch/source/browse/trunk/api/?r=2014– http://sphinxsearch.com/docs/manual-1.10.html#api-reference• PECL – ShinxClient– http://www.php.net/manual/en/class.sphinxclient.php
  15. 15. PHP API – příklad• require_once(“sphinxapi.php“);• $clCode = new SphinxClient();• $clCode->SetServer( “localhost“, 9312);• $clCode->SetLimits(0,99999);• $clCode->SetMatchMode( SPH_MATCH_ANY );• $clCode->SetFieldWeights(array(“pole1“ =>20, “pole2“=>1));• $clCode->SetFilter ( “pole3“, array(“pobocka2“) );• $resultCode = $clCode->Query( “monitor“, “test“ );$resultCode[“matches“] = array1=>Array(“weight“=> 1000,“attrs“=> array()),2=>Array(…),
  16. 16. PHP API – příklad• $result_ids = array_key($resultCode[“matches“]);• $sql = “SELECT id,pole1,pole2 FROM tabulka WHERE id IN (“ . Implode(“,“, $result_ids) . “)“;Pak další zpracování
  17. 17. Závěr• Dotazy …

×