2011-08-21 43 views
2

我試圖使用獅身人面像API來獲取文本結果我得到的是這樣的:如何獲得文本結果SPHINX

16809 Array (
    [error] => 
    [warning] => 
    [status] => 0 
    [fields] => Array (
     [0] => name 
     [1] => description 
    ) 
    [attrs] => Array () 
    [matches] => Array (
     [16809] => Array ([weight] => 2 [attrs] => Array ()) 
    ) 
    [total] => 1 
    [total_found] => 1 
    [time] => 0.000 
    [words] => Array (
     [radell] => Array (
      [docs] => 1 
      [hits] => 2 
     ) 
    ) 
) 

我用sphinx.conf中下面的其他行:

sql_query      = \ 
      SELECT \ 
        id, name, description \ 
      FROM \ 
        products_description; 
sql_field_string = name 
    sql_query_info = SELECT * FROM products_description WHERE id=$id 

是否有可能獲得全文導致類似的名稱和描述,而不是上面的陣列?

+0

您能否提供您用於執行查詢的PHP代碼並生成上面的var_dump()結果? –

+2

等待代碼提供額外的信息,簡短版本是你應該採取該值,16809,並將其用作SQL查詢中的參數'SELECT name,description FROM products_description WHERE id =?' –

+0

我已經提供了php碼。請立即檢查 – fawad

回答

4

獅身人面像爲您提供您的數據庫記錄的索引,但不保存。 您必須從搜索結果中獲取id並寫入另一個sql select以從該行獲取數據。

1

好吧,我想你可以從1-10beta版本的Sphinx中獲取字符串數據。 您可以在源定義中添加需要的字段作爲屬性。

入住這裏你需要使用什麼:

sql_attr_string explanation in SphinxSearch.com

例如,

我有一個事件的數據索引:

sql_query = \ 
      SELECT\ 
        p.place_id,\ 
        p.place_id as place_id_attr,\ 
        ... 
        ... 
      FROM\ 
        places p\ 
        ....... 
        .... 
      GROUP BY\ 
        p.place_id 

    sql_attr_uint = place_id_attr 
    sql_field_string = title 
    sql_field_string = title_normalized 
    sql_field_string = subtitle 
    sql_field_string = description 
    .... 

這樣一來,你有你的領域可從attrs數組中的php代碼獲得。

一個重要的細節:我正在使用sql_field_string,因爲我對文本進行了一些操作,我的意思是,過濾器,命令等等。如果您只需要可以使用sql_attr_string的信息,就像他們在我發佈的鏈接中所解釋的那樣。

我希望這有助於! :)

最好成績,

+0

但我聽說這個返回的數據將被加載到服務器RAM中。如果我對搜索查詢獲得大量記錄,則可能會影響服務器性能。是對的嗎? – fawad

+0

是的,索引內的所有數據都被加載到RAM中。你不能全部獲得:),但是如果你想在搜索結果頁面顯示結果,例如只有幾個字段作爲attribs,那麼它很有用。 – nonainobcn