【问题标题】:Zend index searching with AND or OR condition not working使用 AND 或 OR 条件的 Zend 索引搜索不起作用
【发布时间】:2020-02-19 12:58:16
【问题描述】:

我在 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);
}

当调用 ind 动作输出显示: 1 公关 和条件不工作。

【问题讨论】:

  • 是不是因为你没有id:2和name:pr的文档?

标签: search indexing zend-framework lucene


【解决方案1】:

我认为查询的方式是:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多