2012-09-11 57 views
0

我想了解獅身人面像搜索服務器。我通過命令行並通過PHP工作。唯一令人煩惱的是,當我索引一張表格時,Sphinx返回一個通知,稱它無法找到主鍵列,並且'忽略'該列。它無論如何工作,所以我沒有付出多少心思,但現在我已經注意到,我從我的搜索腳本得到PHP通知說主鍵列q_id是未定義的。該腳本工作並返回正確的q_ids,但我不喜歡收到通知。獅身人面像和主鍵列

這是一段代碼,您可以看到我想要獲取主鍵列的位置。

$row_ids = array(); 
    if (! empty($result["matches"])) { 
     foreach ($result["matches"] as $doc => $docinfo) { 

    array_push($row_ids, $docinfo['q_id']); 
     } 

我明白,獅身人面像不承認一個主鍵是什麼,但我想它仍然可以索引列,因爲搜索是返回正確q_ids必須用它做什麼。我錯在哪裏?謝謝。

+0

其實我只是確定,上面的代碼不給我的q_id,雖然它知道有結果給(即,如果我知道應該有五個結果返回,它會給出未定義變量通知5次,如果有9次結果,則返回9次如果我只是print_r結果[「matches」]變量,腳本將顯示ID,它只是說$ doc_info ['q_id']是未定義的。我可以用不同的方式調用這些文檔ID嗎? – Cbomb

回答

1

「q_id」是屬性嗎?

會像

foreach ($result["matches"] as $doc => $docinfo) { 
     array_push($row_ids, $docinfo['attrs']['q_id']); 
    } 

你應該做的print_r($結果);看到一切返回...

+0

不,我不認爲它是一個屬性,它是索引和搜索的表的主鍵。我將上面的代碼更改爲以下代碼,但可以不明白爲什麼Sphinx不能識別表的主鍵$ row_ids = array(); if(!empty($ result [「matches」])){ foreach($ result [「matches」] as $ do c => $ docinfo){ } $ IDs = implode(「,」,array_keys($ result [「matches」])); \t } – Cbomb

+0

SPhinx對這張桌子一無所知。它只是在'sql_query'中運行查詢併爲結果編制索引。它對桌上的索引一無所知。 – barryhunter

+0

沒錯。因此,假設在sql_query中運行的查詢是選擇表的每一列,其中第一個是包含整數的主鍵列,那些整數也沒有被索引?我問,因爲這些整數必然發生,因爲這些整數是作爲搜索結果吐出來的。 – Cbomb