Lucene外国人的问题

时间:2009-07-21 09:25:41

标签: php zend-framework lucene

我在使用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编码的DB中随机选择的)

  

注意: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英寸   \ Zend的\搜索\ Lucene的\首页\ SegmentInfo.php   在第632行

     

注意:试图获得属性   非对象   \ Zend的\搜索\ Lucene的\首页\ SegmentMerger.php   第196行

     

注意:试图获得属性   非对象   \ Zend的\搜索\ Lucene的\首页\ SegmentMerger.php   在线200

     

注意:未定义的索引:in   \ Zend的\搜索\ Lucene的\首页\ SegmentWriter.php   在第231行

     

注意:试图获得属性   非对象   \ Zend的\搜索\ Lucene的\首页\ SegmentWriter.php   在第231行

     

注意:未定义的偏移量:250595英寸   \ Zend的\搜索\ Lucene的\首页\ SegmentInfo.php   在线2020

     

注意:试图获得属性   非对象   \ Zend的\搜索\ Lucene的\首页\ SegmentInfo.php   在线2020

     

注意:未定义的索引:in   \ Zend的\搜索\ Lucene的\首页\ SegmentWriter.php   在第465行   ...


因此。有人可以解释一下吗? :)我相信(经过几天的谷歌搜索),我不是唯一一个遇到这种情况的人。

1 个答案:

答案 0 :(得分:1)

我建议您尝试使用UTF-8 compatible text analyzer。 看起来您使用的分析仪会破坏非ASCII字符。 您应确保文本输入正确,并以正确的格式到达Lucene。