2011-06-26 66 views
1

我正在使用Zend_Search_Lucene作爲獨立組件的法語網站的搜索引擎。在Windows上我的本地網絡服務器(WAMP)上一切正常,但帶有重音詞(如:géographie)的搜索在我的生產服務器(在Unix上運行)上不起作用。Zend_lucene用口音搜索

我在Linux上生成了索引,重音字被正確索引。

See a screenshot of my generated index here

我試圖迫使編碼與分析儀的參數,轉換的查詢字符串函數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上工作,我覺得我錯過了一層編碼的地方,但我無法在谷歌上找到任何有關此信息。

回答

0

我有一個網站設置與您的選項完全相同(不敏感,utf-8和)。不過,我用來創建通過索引對象:通過代理

$index = new Zend_Search_Lucene('/path/to/index'); 

,而不是(通過Zend_Search_Lucene::open在你的情況,但不應該有任何區別)。

我也只是通過查詢(短全面的檢查之後),直接把指數(不解析):

$query = $_GET['q']; 
... 
$results = $index->find($query); 
+1

感謝,我發現,你可以通過編碼作爲參數解析函數: $ resultats = $ index->​​ find(Zend_Search_Lucene_Search_QueryParser :: parse($ _ POST ['recherche'],'utf-8')); 它也有效。 – DoesNotCompute