0

ドキュメント内のキーワードを検索するために zend_search_lucene を使用しています。ドキュメントの1つに、フレーズがありますThis taught me a valuable lesson in time management as I still had to attend lectures and tutorials during the day. I enjoyed improving my telephone manner and learning to deal with different reactions to my requests for donations.

さて、「タイム マネジメントに関する貴重な教訓」を検索しても何もヒットしません。以下のコードを使用して検索しています。

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive());

$index = new Zend_Search_Lucene('/home/project/mgh/data/search_file/lucene.customer.index');

 Zend_Search_Lucene::getDefaultSearchField('contents');

    $results = $index->find('contents:"valuable lesson on cost management" ');

    $this->count=count($results);

上記の例では、不一致のみが 'in' の代わりに 'on' がありますが、残りの単語は一致しています。一致する単語がほとんどない場合に結果カウントを取得する方法 (一致しない単語がほとんどない場合でも) ?

提案をありがとう。

参照: http://framework.zend.com/manual/en/zend.search.lucene.query-language.html

4

2 に答える 2

0

ここでの鍵はストップワードかもしれません。「in」と「on」をストップワードとして定義した場合(Luceneは一般的すぎるため無視する単語)、クエリ「時間管理に関する貴重なレッスン」は、ドキュメントテキストの「時間管理における貴重なレッスン」セクションと一致します。 。

于 2012-06-04T12:10:02.663 に答える
0

問題は zend_search_lucene ではなく、Lucene がデータのインデックスを作成する方法にあります。Solr ドキュメントのアナライザー、トークナイザー、およびトークン フィルターを読んで、その仕組みを理解することをお勧めします。また、schema.xml情報を投稿すると役立ちます(どの情報をどのようにインデックス化するかを定義する場所)。

于 2012-06-04T10:19:57.513 に答える