2

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

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive());

但是,尽管数字现在可以工作,但它们并没有被视为“文本”(即,根据 ( $this->_pattern->text) 的定义。因此,如果我尝试使用 20234* (甚至 'C13A*' - 任何东西)执行通配符搜索其中一个数字作为前面 3 个字符之一出现)返回异常:

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

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

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

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

我尝试的另一件事是将要求(在 wildcard.php 中)简单地更改为“0”,这消除了该错误(尽管方式很糟糕),但会带来一个新错误:

... wildcard.php 中的“达到每个查询的字数限制”

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

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

4

0 回答 0