Php ZendSearch Lucene布尔查询不';我不能正确处理数字

Php ZendSearch Lucene布尔查询不';我不能正确处理数字,php,mysql,lucene,zend-framework2,zend-search-lucene,Php,Mysql,Lucene,Zend Framework2,Zend Search Lucene,我是Zend Framework 2和ZendSearch Lucene的新手。 我的数据库表有三列整数,第一列是id。 第二个是发布值(1到3),第三个是类别值(1到5)。 该表如下所示: |id |发布|类别| |1 | 1 | 1 | |2 | 1 | 2 | |3 | 1 | 3 | |4 | 2 | 3 | |5 | 2 | 4| 我通过以下查询对此进行了测试: “发布:1”返回正确id的1,2,3 “发布:2”返回正确id的4,5 “发布:3”返回错误id的1,2,3,4,5;结果应

我是Zend Framework 2和ZendSearch Lucene的新手。 我的数据库表有三列整数,第一列是id。 第二个是发布值(1到3),第三个是类别值(1到5)。 该表如下所示:

|id |发布|类别|
|1 | 1 | 1 |
|2 | 1 | 2 |
|3 | 1 | 3 |
|4 | 2 | 3 |
|5 | 2 | 4|

我通过以下查询对此进行了测试:
“发布:1”返回正确id的1,2,3
“发布:2”返回正确id的4,5
“发布:3”返回错误id的1,2,3,4,5;结果应为空。
“发布:1和类别:1”返回正确的id 1
“发布:1和类别:3”返回正确的id 3
“发布:1和类别:4”返回正确的空结果
“发布:1和类别:5”返回错误id的1,2,3;结果应该是空的

当数字不存在时,结果不是空的,它包含所有行。 当数字不存在时,结果是否为空

默认编码为UTF-8: \ZendSearch\Lucene\Search\QueryParser::setDefaultEncoding('UTF-8'); \ZendSearch\Lucene\Analysis\Analyzer\Analyzer::setDefault(新建\ZendSearch\Lucene\Analysis\Analyzer\Common\Utf8Num\CaseSensitive())


id没有索引,publish和category是关键字。

我想我找到了答案

当我用下面的代码构建查询时,查询是“+(发布:1)+(类别:1)”,这是有效的

$query = new \ZendSearch\Lucene\Search\Query\Boolean();

$termPublish = new \ZendSearch\Lucene\Index\Term(1, 'publish' );
$subqueryPublish = new \ZendSearch\Lucene\Search\Query\Term($termPublish);
$query->addSubquery($subqueryPublish, true); // required

$termCategory = new \ZendSearch\Lucene\Index\Term(1, 'category' );
$subqueryCategory = new \ZendSearch\Lucene\Search\Query\Term($termCategory);
$query->addSubquery($subqueryCategory, true); // required