如何在Zend Lucene搜索引擎中添加“where”条件?

时间:2013-05-16 19:35:29

标签: php zend-framework

有一些使用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”。我该怎么做?谢谢。

1 个答案:

答案 0 :(得分: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);