2013-05-16 66 views
2

有使用Zend的Lucene搜索的一些代碼:如何將「where」條件添加到Zend Lucene搜索引擎?

$index = new Zend_Search_Lucene(Yii::getPathOfAlias('application.'.$this->index_file)); 
$results = $index->find('PHP'); 
foreach ($results as $result) 
{ 
    echo $result->name; 
    echo '<br/>'; 
} 

它的工作原理是正確的。但現在我需要添加「where」條件來搜索:「WHERE vacancy_state = 1」。我該怎麼做?謝謝。

回答

0

您需要創建查詢。爲此,您可以爲文本或使用查詢API(OFC vancy_state必須是在你的指數):

title:"PHP" AND vacancy_state:1 

或使用API​​應該是這樣的:

$query = new Zend_Search_Lucene_Search_Query_MultiTerm(); 
    $query->addTerm(new Zend_Search_Lucene_Index_Term('PHP'), true); 
    $query->addTerm(new Zend_Search_Lucene_Index_Term(1, 'vacancy_state'), true); 
    $index->find($query); 

OR

$query = new Zend_Search_Lucene_Search_Query_Boolean(); 
    $term = new Zend_Search_Lucene_Index_Term('PHP'); 
    $subquery = new Zend_Search_Lucene_Search_Query_Term($term); 
    $query->addSubquery($subquery, true); 
    $term = new Zend_Search_Lucene_Index_Term(1, 'vacancy_state'); 
    $subquery = new Zend_Search_Lucene_Search_Query_Term($term); 
    $query->addSubquery($subquery, true);