2012-05-27 37 views
3

我有一個名稱,俱樂部,natranking,doublesranking和俱樂部領域的搜索表單。我從選擇框中選擇了一個俱樂部,將名稱字段留空並單擊「搜索」。結果沒有命中。應該有3個,因爲數據庫中有3條記錄是所選俱樂部的一部分。這是爲什麼?沒有來自Zend Search MultiTerm Query的匹配? (應該有3)

Thx。

控制器類:

$search = $this->get('ewz_search.lucene'); 

// Create query 
$terms = array(new Term($form->getData()->getName(), 'name'), 
    new Term($form->getData()->getClub(), 'club'), 
    new Term($form->getData()->getNatRanking(), 'natranking'), 
    new Term($form->getData()->getNatDoublesRanking(), 'doublesranking') 
); 
$signs = array(TRUE, TRUE, TRUE, TRUE); 
$query = new MultiTerm($terms, $signs); 

// Get results 
$results = $search->find($query); 

// Echo prints: "+name: +club:A.R.A. LA GANTOISE +natranking: +doublesranking:" 
echo $query; 

// This returns 0 
die("debug: " . count($results); 

//編輯

這工作(給我3個結果):

$manual_query = "+name: +club:A.R.A. LA GANTOISE +natranking: +doublesranking:"; 
+0

你的Lucene索引是什麼樣的?你是如何對數據進行索引的?你可以使用像Luke這樣的工具來查看索引,數據是否按照您的想法實際編制索引? –

+0

我將在今晚回家時檢查Lucene索引的外觀。但我認爲這是可以的,因爲手動查詢確實有效:) – mattyh88

回答

1

我鑄造的多條對象爲字符串,現在它的工作原理。 這很奇怪,因爲文檔中的示例清楚地表明它應該在不將其轉換爲字符串的情況下工作:

來自文檔的檢查(http://framework.zend.com/manual/en/zend.search.lucene。 query-api.html#zend.search.lucene.queries.multiterm-query)

$query = new Zend_Search_Lucene_Search_Query_MultiTerm(); 

$query->addTerm(new Zend_Search_Lucene_Index_Term('word1'), true); 
$query->addTerm(new Zend_Search_Lucene_Index_Term('word2', 'author'), 
      null); 
$query->addTerm(new Zend_Search_Lucene_Index_Term('word3'), false); 

$hits = $index->find($query); 
+0

誰將獲得賞金? – Rinzler

+0

沒有人,我想,因爲我沒有得到答案... – mattyh88

+0

所以你失去了50回購,然後我想http://meta.stackexchange.com/questions/54998/i-just-awarded-myself-a-bounty – Rinzler

相關問題