如何添加“where”;条件到Zend Lucene搜索引擎


How to add "where" condition to Zend Lucene search engine?

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

您需要创建查询。您可以将其作为文本或使用查询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);

    $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);