php - ZendSearch Lucene bool 查询不能正确处理数字

标签 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|

我使用以下查询对此进行了测试:
"publish:1"返回正确的id的1,2,3;
"publish:2"返回正确的id的4,5;
"publish:3"返回错误id的1,2,3,4,5;结果应该是空的。
"publish:1 AND category:1"返回正确的id 1;
"publish:1 AND category:3"返回正确的id 3;
"publish:1 AND category:4"返回正确的空结果;
"publish:1 AND category: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\CaseInsensitive());

id 是未索引的,publish 和 category 是关键字。

最佳答案

我想我找到了答案。

当我使用以下代码构建查询时,查询是“+(publish:1) +(category: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

关于php - ZendSearch Lucene bool 查询不能正确处理数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27917547/

相关文章:

php - mysql 将数据分成一周中的几天

php - 如何打印latin1数据库中的UTF-8数据?

php - 如何统计谁在MySQL中点击次数最多

google-app-engine - Google App Engine : Lucene org. apache.lucene.store.LockObtainFailedException:锁定获取超时

java - 构建快速的网络服务

php - Perl 与 PHP 的网络抓取

lucene - 在没有针对内容所用语言的分析器的情况下实现 Lucene?

mysql - 尝试在 for 循环内连续向 lucene 索引添加文档时抛出异常

php - 在 php 中动态创建文件(扩展名问题)

mysql - 如何获得不同列的总值(value)?