2011-01-25 77 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 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是 「名稱S01

我想要匹配的版本(相對)(按相關性排序)

將包含名稱s01e的所有版本開始* *

問題是,它不會這樣做。 一個簡單的像'名稱s01%'在SQL中會做到這一點,但獅身人面像的整點是速度。

有人有解決方案如何完成在獅身人面像所需(搜索)結果?

乾杯

回答

2

min_prefix_len(http://sphinxsearch.com/docs/current.html#conf-min-prefix-len)可以幫助你。

最良好的祝願, 謝爾蓋

+0

非常感謝!我會看看,希望它能解決一些查詢問題。 –