Доброго времени суток, господа.
Sphinx поставил, sphinxclient пекл подключил, работает на ура. Осталось только "поработать напильником" так сказать. Собственно в чем у меня возникает запара. Как мне построить индекс из нескольких таблиц, id в которых естественно совпадают. Сейчас мой конфиг выглядит след образом:
CODE ( htmlphp):
скопировать код в буфер обмена
source articles { sql_host = localhost sql_user = *** sql_pass = *** sql_db = *** sql_port = 3306 sql_query_pre = SET NAMES utf8 sql_query = SELECT id , header, text , "article" AS type FROM articles_view sql_attr_uint = id sql_attr_uint = type #sql_query_info = SELECT article_header FROM bs_articles WHERE article_id=$id } source blogs { sql_host = localhost sql_user = *** sql_pass = *** sql_db = *** sql_port = 3306 sql_query_pre = SET NAMES utf8 sql_query = SELECT id , header, text , "blog" AS type FROM bs_blog sql_attr_uint = id sql_attr_uint = type } source books{ sql_host = localhost sql_user = *** sql_pass = *** sql_db = *** sql_port = 3306 sql_query_pre = SET NAMES utf8 sql_query = SELECT id , header, text , "book" AS type FROM bs_books sql_attr_uint = id sql_attr_uint = type } index index { source = articles source = blogs source = books path = /var/lib/sphinxsearch/data/index morphology = stem_ru min_word_len = 1 charset_type = utf-8 } searchd { listen = localhost:9306 query_log = /var /log/sphinxsearch /query .log pid_file = /var/run/sphinxsearch/searchd.pid read_timeout = 5 max_children = 30 max_matches = 1000 seamless_rotate = 1 preopen_indexes = 0 unlink_old = 1 }
следующим кодом я получаю некий массив результата работы сфинкса:
PHP:
скопировать код в буфер обмена
$cl = new SphinxClient; $cl->SetServer('localhost', 9306); $cl->SetMatchMode(SPH_MATCH_ANY); $cl->SetLimits(0, 10, 10); $cl->setMaxQueryTime(3); $query_string = 'букмекерская контора'; $result = $cl->query($query_string); /* START DEBUG */ if (!IN_PRODUCTION) { print '<xmp>'; print '</xmp>'; } /* END DEBUG */
А вот собственно и результат работы:
Цитата:array(10) { ["error"]=> string(0) "" ["warning"]=> string(0) "" ["status"]=> int(0) ["fields"]=> array(2) { [0]=> string(6) "header" [1]=> string(4) "text" } ["attrs"]=> array(0) { } ["matches"]=> array(20) { [2]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [5]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [6]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [7]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [8]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [9]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [10]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [11]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [12]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [14]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [15]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [16]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [17]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [18]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [21]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [22]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [401]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [403]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [460]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } [652]=> array(2) { ["weight"]=> int(12) ["attrs"]=> array(0) { } } } ["total"]=> int(100) ["total_found"]=> int(358) ["time"]=> float(0.004) ["words"]=> array(2) { ["букмекерск"]=> array(2) { ["docs"]=> int(312) ["hits"]=> int(547) } ["контор"]=> array(2) { ["docs"]=> int(354) ["hits"]=> int(660) } } }
Я так понимаю мне возвращаются айдишники найденных записей, но какой из них в какой таблице лежит? Как мне получить к этим айдишникам еще и данные или сфинкс занимается только ранжированием айдишников?
|