【问题标题】:Lucene foreign chars problemLucene 外来字符问题
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 我在发布后实际上能够解决这个问题,但你的回答可能会让我找到解决方案。我采用 UTF-8 方式,并使用所有 mb_* 函数等,我设法运行索引而没有错误。它现在似乎正在工作,我可以查询索引并返回有效结果。感谢您的快速回复!
  • @Znarkus 请发布您的解决方案。我们需要它。
  • @runrunforest 这是很久以前的事了,所以我不完全确定是什么把戏。但我想我确保所有内容都以 UTF-8 编码。但是从那以后我们已经放弃了 Zend_Lucene 以支持 Solr,因为 Zend_Lucene 根本无法扩展;它很慢。祝你好运!
猜你喜欢
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
  • 2021-05-28
  • 2012-06-22
  • 2013-08-20
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
相关资源
最近更新 更多