Zend搜索Lucene数字通配符问题

时间:2011-04-26 16:58:19

标签: php zend-framework wildcard zend-search-lucene

我正在使用Zend Lucene Search的一个项目实现,就像许多初学者直接意识到数字没有编入索引。因此,通过一些搜索,我想出了如何使用以下方法更改分析器以包含数字:

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive());

但是虽然数字现在正在运行,但它们并没有被视为“文本”(也就是说,根据($this->_pattern->text)的定义。所以,如果我尝试使用20234 *(例如,20234 *)执行通配符搜索甚至'C13A *' - 数字显示为前3个字符之一的任何内容)返回异常:

  

'在模式的开头'至少需要3个非通配符'...在wildcard.php中

我上次检查时,数字不是通配符!

我见过其他一些人使用上面的分析器修复程序来允许对数字编制索引,并且他们在搜索中没有这个问题。输入20234 *实际上适用于他们的情况。

不幸的是,似乎没有人知道如何解决/改变这种行为,我已经阅读了很多搜索内容,只是意识到我肯定需要这方面的帮助。

我尝试的另一件事就是简单地将需求(在wildcard.php中)更改为'0',这消除了该错误(虽然方式不好),但却引发了一个新错误:

  

'在... wildcard.php

中达到了每个查询限制的条款

即使每个号码都被视为一个单独的术语,我也看不到20234 *如何违反查询限制。

当然,我现在可以更改$ maxTerms变量,但显然这不是解决方案,可能会产生操作问题/更多错误。

0 个答案:

没有答案