【发布时间】:2010-11-12 14:08:37
【问题描述】:
我在使用 Zend_Lucene 和 åäö 等外来字符时遇到了一些严重问题。这些问题在创建索引和查询索引时都会出现。我已经尝试过 iso-8859-1 和 utf-8。
ISO-8859-1
不起作用的查询类似于“+_area:skåne”。使用 Zend_Lucene 我没有得到任何匹配,但是如果我在 Luke 中运行这个查询,我会得到很多匹配的文档。
索引包含 20 个字段。使用以下语法添加“_area”字段:
$doc->addField(Zend_Search_Lucene_Field::keyword('_area', strtolower($item['area']), 'iso-8859-1'));
我正在使用Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive 分析器。
在运行索引时,有时会出现以下错误消息(索引的文档是从数据库中随机选择的,使用iso-8859-1编码)
注意:iconv():在 TextNum.php 的输入字符串中检测到非法字符。
这是通过检查 $this->_input 是否为空来“解决”的,因为这似乎导致了通知。注意:奇怪的查询结果是预先存在的条件。
当我使用外来字符搜索关键字字段时,我收到上述错误,但是当我搜索文本字段时,它的行为有所不同。然后它会产生以下大约一百个错误。
注意:未定义的偏移量:1996 年在 \Zend\Search\Lucene\Search\Query\MultiTerm.php 第 472 行
但它会产生看起来像正确的结果集!附带说明一下,第二个查询不会在 Luke 中生成任何结果。
UTF-8
我也尝试过 UTF-8,因为据我所知,Zend_Lucene 在内部使用它。由于数据集是 ISO-8859-1,我使用utf8_encode 对其进行转换。但是索引会产生以下错误。
注意:未定义的偏移量:266979 in \Zend\Search\Lucene\Index\SegmentInfo.php 在第 632 行
注意:试图获取的属性 非对象在 \Zend\Search\Lucene\Index\SegmentMerger.php 在第 196 行
注意:试图获取的属性 非对象在 \Zend\Search\Lucene\Index\SegmentMerger.php 在第 200 行
注意:未定义索引:in \Zend\Search\Lucene\Index\SegmentWriter.php 在第 231 行
注意:试图获取的属性 非对象在 \Zend\Search\Lucene\Index\SegmentWriter.php 在第 231 行
注意:未定义的偏移量:250595 in \Zend\Search\Lucene\Index\SegmentInfo.php 2020年上线
注意:试图获取的属性 非对象在 \Zend\Search\Lucene\Index\SegmentInfo.php 2020年上线
注意:未定义索引:in \Zend\Search\Lucene\Index\SegmentWriter.php 在线 465 ...
所以。有人可以阐明一下吗? :) 我相信(经过几天的谷歌搜索)我不是唯一遇到这种情况的人。
【问题讨论】:
-
请发布您的解决方案。我们需要它。
标签: php zend-framework lucene