Php Zend\u搜索\u Lucene范围查询错误

Php Zend\u搜索\u Lucene范围查询错误,php,zend-framework,zend-search-lucene,Php,Zend Framework,Zend Search Lucene,我为每个文档设置了一个日期字段。(关键词) 其中存储的值采用此格式;20100511 每次尝试执行范围查询时,都会出现以下错误: date:[10000000 TO 20000000] 至少一个范围查询边界项 必须是非空项 有人有线索吗 更新 我已经通过编程实现了这一点。 这是否意味着解析器有缺陷 $from = new Zend_Search_Lucene_Index_Term('10000000', 'dateOfBirthMod'); $to = new Zend_Search_

我为每个文档设置了一个日期字段。(关键词)

其中存储的值采用此格式;20100511

每次尝试执行范围查询时,都会出现以下错误:

date:[10000000 TO 20000000]
至少一个范围查询边界项 必须是非空项

有人有线索吗

更新

我已经通过编程实现了这一点。 这是否意味着解析器有缺陷

$from  = new Zend_Search_Lucene_Index_Term('10000000', 'dateOfBirthMod');
$to    = new Zend_Search_Lucene_Index_Term('20000000', 'dateOfBirthMod');
$query = new Zend_Search_Lucene_Search_Query_Range($from, $to, true);

显然是在查询解析器中(非常旧的btw)。我建议您对该问题添加一条评论或打开一条新评论,以确认它仍在ZF的x.x版本中发生。

我已经为这个错误制定了一个解决方案,它源于名为tokenize()的方法,该方法不返回任何值,可以在Zend/Search/Lucene/Analysis/Analyzer.php中找到

如果使用最新的ZF版本(1.10.7),可以尝试用以下代码替换代码


我不知道它是否适用于较旧的版本。

实际上,这是一个有问题的默认值,而不是一个bug。您可以更改分析器以允许使用数字。事实上,您甚至可以编写自定义分析器。看

允许数字标记化的设置为

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive());
在Zf 1.x和Zf 2.x中

Zend\Search\Lucene\Analysis\Analyzer\Analyzer::setDefault(new Zend\Search\Lucene\Analysis\Analyzer\Common\TextNum\CaseInsensitive());

首先,您必须将默认分析器更改为TextNum,以便在查找之前允许使用number

ZF2:


其次,您的日期字段必须是关键字,而不是文本。

哇,这个错误是一年多前报告的。我将对此发表评论,只是为了确定。谢谢你对nuqqsa的帮助。
Zend\Search\Lucene\Analysis\Analyzer\Analyzer::setDefault(new Zend\Search\Lucene\Analysis\Analyzer\Common\TextNum\CaseInsensitive());
\ZendSearch\Lucene\Analysis\Analyzer\Analyzer::setDefault(new \ZendSearch\Lucene\Analysis\Analyzer\Common\TextNum\CaseInsensitive());