2011-01-25 11 views
0

私はかなりスフィンクスに新しいので、質問があります。SPHINX(検索):クエリでSQLを偽ったようなもの

のは、私がtv_releasesマイsphinx.confは(小部分)が含まれてい

と呼ばれるテーブルがあるとしましょう:

source tv_releases 
{ 
    type   = mysql 

    sql_host  = localhost 
    sql_user  = --------- 
    sql_pass  = --------- 
    sql_db   = -------- 
    sql_port  = 3306 

    sql_query_pre = SET NAMES utf8 

    #ingore for example (delta updates). 
    sql_query_pre = REPLACE INTO title_counter SELECT 3, MAX(id) FROM tv_releases 

    sql_query = SELECT id,rel ,tv_id,total_subs FROM tv_releases\ 

    #ignore for example (delta updates). 
    WHERE id<=(SELECT max_doc_id FROM title_counter WHERE counter_id=3) 

    sql_attr_uint = total_subs 
    sql_attr_uint = tv_id 
} 

インデックスは罰金、また、照会しているが。今

sphinxapi(PHP)(部分):

$sp = new SphinxClient(); 
---... 

$sp->SetMatchMode(SPH_MATCH_ALL); 
$sp->SetArrayResult(true); 
$sp->SetLimits (0, 100); 
$sp->SetSortMode (SPH_SORT_EXTENDED, "@relevance DESC, ....more options"); 



    $results = $sp->Query('SEARCHTERM', 'tv_releases'); 

今私の質問:

はのは、私は次のリリース(表中RELと呼ばれる)を持っているとしましょう。

rel 1 : Name s01e02 Format-extradata 
rel 2 : Name s01e03 Format-extradata 
rel 3 : Name s02e05 Format-extradata 
rel 4 : Name s02e06 Format-extradata 
rel 5 : Name s03e06 Format-extradata 

私SEARCHTERMは私が(関連性順)(REL)

名s01eを含むすべてのリリースで始まりますマッチングリリースすることを望む "名S01"

です* *

問題は、これはしません。 sqlの単純な '名前s01%'はそれを行いますが、スフィンクスの全体のポイントはスピードです。

誰かが、スフィンクスで必要な(検索)結果をどのように達成するための解決策を持っていますか?

乾杯

答えて

2

min_prefix_len(http://sphinxsearch.com/docs/current.html#conf-min-prefix-len)があなたを助けることができます。

幸運を祈り、 セルゲイ

+0

どうもありがとう!私は見て、うまくいけばそれはいくつかのクエリの問題を解決します。 –

関連する問題