Php Zend';s Lucene荧光笔和unicode

Php Zend';s Lucene荧光笔和unicode,php,zend-framework,lucene,Php,Zend Framework,Lucene,这件事快把我逼疯了。我正试图从Lucene获取搜索结果,但它就是不起作用。以下是我正在做的: $userQuery = Zend_Search_Lucene_Search_QueryParser::parse($_GET['query'], 'utf-8'); $search->results = $this->index->find($userQuery); 然后我检索命中率,在每次命中率上我都试图突出显示匹配项 $html = $query->highlightMa

这件事快把我逼疯了。我正试图从Lucene获取搜索结果,但它就是不起作用。以下是我正在做的:

$userQuery = Zend_Search_Lucene_Search_QueryParser::parse($_GET['query'], 'utf-8');
$search->results = $this->index->find($userQuery);
然后我检索命中率,在每次命中率上我都试图突出显示匹配项

$html = $query->highlightMatches($hit->body, 'utf-8');
我正在搜索“attivitá”:它会找到一个正确的点击,但不会突出显示任何内容,它会输出完整的文本以及正确的重音(因此我看到“attivitá”这个词没有突出显示)

如果我在highlightMatches中省略'utf-8'参数,它将突出显示attivitá字,但输出中的“a”字符被截断,因此它将显示“attivit”。本例中的输出字符串是ASCII编码的

怎么了??!我的页面是utf-8编码的。我添加具有以下逻辑的文档:

// Following two lines are at the initialization so they hold for all code
Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('UTF-8');
Zend_Search_Lucene_Analysis_Analyzer::setDefault(
  new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive ()
);
...
$doc->addField(Zend_Search_Lucene_Field::Text($fieldName, $fieldValue, "UTF-8"));
...

非常感谢您的帮助

我在使用Zend Lucene荧光笔时遇到了同样的问题。看起来,Zend希望在返回到您的视图或进一步处理之前,使用iconv将要高亮显示的字符串转换为UTF-8

在我的例子中,iconv无法检测到我的字符串已经是UTF-8,因此转换失败。reset()函数中Zend_Search_Lucene_Anaylsis_analysis_Common_Utf8的以下代码行导致了该问题:

$this->_input = iconv($this->_encoding, 'UTF-8', $this->_input);
我只是简单地评论了一下,然后就成功了。因为不再有转换在进行,所以转换不会失败


我希望这会有所帮助。

看看这个,它可能会有所帮助:这是我的出发点。但是字符串在索引中的编码是正确的。他们被荧光灯腐蚀了!这很有趣。我已经好几年没用过那个组件了,所以我自己也不能尝试。。。