Поиск индекса Zend с условием AND или OR не работает - PullRequest
0 голосов
/ 23 октября 2019

Я написал поисковик индекса в Lucene, который будет искать несколько полей в индексированной базе данных.

Я написал следующий код.

public function actionInd(){
    $index = Lucene::open(Yii::$app->basePath."/search");
    $res = $index->find('name:pr AND id:2'); 
    foreach ($res as $hit){
        $document = $hit->getDocument();
        echo "<br>";echo "<br>";
        print_r($document->getFieldValue('id'));
        echo "<br>";
        print_r($document->getFieldValue('name'));
    }
}
public function actionCreate(){ 
$index = Lucene::open(Yii::$app->basePath."/search");
$doc = new Document();
$doc->addField(Field::Text('id', 3));
$doc->addField(Field::Text('name', 'pr'));
$doc->addField(Field::Text('title', 'prajapati'));
$doc->addField(Field::keyword('key', 3));
$index->addDocument($doc);
}

когда вывод действия call ind показывает: 1 pr И условие не работает.

1 Ответ

0 голосов
/ 31 октября 2019

Я думаю, что способ дать запрос:

$query = Zend\Search\Lucene\Search\QueryParser::parse('name:pr AND id:2', 'iso-8859-5');
//or without char-encoding
$query = Zend\Search\Lucene\Search\QueryParser::parse('name:pr AND id:2');
$hits = $index->find($query);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...