这个快把我逼疯了。我正在尝试从 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à 单词,但输出中的“à”字符会被截断,因此会显示“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"));
...
非常感谢任何帮助!