我正在使用 Zend_Search_Lucene 作为独立组件的法国网站的搜索引擎。在 Windows 上的本地网络服务器 (WAMP) 上一切正常,但带有重音字词的搜索(例如:géographie)在我的生产服务器(在 Unix 上运行)上不起作用。
我在 Linux 上生成了索引,重音词被正确索引。
我试图用分析器的参数强制编码,用utf8_encode转换查询字符串。但我仍然无法让它工作。
我用这些参数调用 Lucene:
Zend_Search_Lucene_Search_QueryParser::setDefaultOperator(Zend_Search_Lucene_Search_QueryParser::B_AND);
Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive());
Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8');
$index = Zend_Search_Lucene::open($cheminIndexes);
$resultats = $index->find(Zend_Search_Lucene_Search_QueryParser::parse(utf8_encode($_POST['recherche'])));
此代码返回所有非重音词,但它不返回我的任何重音词,尽管这些词已编入索引。这令人沮丧,因为我不明白为什么它可以在 Windows 上运行,我觉得我在某处缺少一层编码,但我在谷歌上找不到任何关于此的信息。