2013-08-26 117 views
0

我在我的sphinx配置中有sql_attr_uint = category如何篩選sphinxapi中的sql_attr_uint結果?

如何過濾sphinxapi中的sql_attr_uint結果? 比如我想根據test結果進行排序,並在那裏類是13 or 23 or 77

$results = $sp->Query("test", "index"]); 
+0

請告訴我$查詢的價值? – Lee

+0

@Lee'test' - 搜索字詞。我不知道現在要包含「類別」過濾器 – user2696962

回答

1

首先,我只想說的PHP代碼,你決定刪除該位,將有禁止其他人能夠幫助,因爲他們不知道你是如何連接到獅身人面像的搜索引擎和你正在執行什麼類型的查詢(因爲你可以使用SQL風格查詢以及「CLI風格」查詢)。

無論如何,從這段代碼中,很明顯你使用php.net上記錄的PHP Sphinx客戶端。爲此,你HOULD使用:http://www.php.net/manual/en/sphinxclient.setfilter.php

所以,你會在查詢方法之前做到這一點(其中$ SP是你的獅身人面像客戶端對象):

$SP->setFilter('category', array(12, 23, 77)); 
+0

謝謝。奇蹟般有效。編輯了代碼。我如何設置「查詢」來搜索所有內容?所以我只能通過過濾器進行排序? – user2696962

+0

您可以嘗試'*'作爲您的查詢,但是,sphinx不是數據存儲區,它是一個文本搜索引擎。作爲sphinx配置的一部分,您將不得不沿着前綴/後綴索引設置參數。這將意味着獅身人面像將只從一個特定的長度索引。如果你的最小長度是3,你將在你的'*'之前/之後至少需要3個字符才能成功搜索(假設你的'enable_star'設置爲true)。說實話,假設你使用mysql數據存儲作爲你的源代碼,你應該使用直接的mysql查詢,如果你不打算使用文本搜索。 – Lee

+0

我已經嘗試過,最小長度設置爲1 \t'$ results = $ sp-> Query(「*」,「index」);'並且我已將'enable_star'設置爲true。它只與一個角色的組合一起工作。我認爲我可以進一步優化我的網站的某些部分,因爲獅身人面像與mysql相比是超快的。 – user2696962