2012-10-15 30 views
0

我需要做一個分頁/導航菜單中斯芬克斯斯芬克斯字母分頁/導航菜單

*(跡象)0 1 2 3 4 5 6 7 8 9 ABCDEFGHIJKLMNOPQRSTU VWXYZ

並過濾結果。

在 「A」 頁面 - 只有結果,從 「A」

感謝

+0

這是真的關於sphinxsearch?獅身人面像是一個搜索索引器的名稱,但也是一個Python文檔框架(以及一個Speach處理工具包) - 需要澄清你的意思... – barryhunter

回答

1

但是,如果你的意思是sphinxsearch,這樣

sql_query = SELECT id, name, ORD(IF(ORD(name) BETWEEN 48 AND 57 OR ORD(UPPER(name)) BETWEEN 65 AND 90, UPPER(SUBSTRING(name,0,1)), '*')) AS ord, ... 
sql_attr_uint = ord 

的東西會給你一個數字屬性代表名稱的第一個字母。可以與setFilter一起使用,以僅返回與該值匹配的結果。

甚至可以與setGroupBy一起使用以獲得匹配每個序號的結果數量。

REF:http://www.asciitable.com/

-

編輯補充:使用整數屬性 - 已經通過了MySQL的ORD函數整數,因爲ATTR str2ordinal(!也不字符串爲此事屬性)允許過濾。將自己轉換爲像這樣的整數允許過濾。

如只得到「A」的效果,可以做

$cl->setFilter('ord',array(ord('A'))); 

這工作,因爲PHP的ORD函數的工作方式與MySQL的一樣。

+0

你好。 我想在這樣的事情: sql_query = SELECT ID,名稱,LEFT(UPPER(名稱),1)first_letter,... sql_attr_str2ordinal \t = first_letter (UPPER(名稱)NOT REGEXP「^ [ [:alnum:]]')(所有非字母數字 - 分組在一個「*」類別中) (UPPER(name)REGEXP'^ [[:alnum:]]') * 0 1 2 3 4 5 6 7 8 9 ABCDEFGHIJKLMNOPQRSTU VWXYZ 我想過濾「first_letter」 $ result = $ cl-> Query($ search,其中名稱以「A」開頭); –

+0

或者設置一個過濾器: 類似於:$ cl-> SetFilter(「first_letter」,「A」); –

+0

另一件事: 爲了使firsta字符循環,我需要做2個查詢,因爲第一個有20個元素的限制,我想爲總結果做字母分頁。 我有另一個可能性來避免第二個查詢? –