これは私を怒らせています。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à」という単語は強調表示されていません)。
ハイライトマッチで「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"));
...
どんな助けでも大歓迎です!!