有一些使用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);