1

私は 2 つの異なるアプローチを使用してインデックスを検索しています。私は自分の間違いが何であるか疑問に思っています。

これがうまくいく私の最初のアプローチです:

$query = '+language:EN +country:US';
$hits = $index->find($query);

私は同じことをしようとしましたZend_Search_Lucene_Index_Term:

$query = new Zend_Search_Lucene_Search_Query_MultiTerm();
$query->addTerm(new Zend_Search_Lucene_Index_Term('EN', 'language'), true);
$query->addTerm(new Zend_Search_Lucene_Index_Term('US', 'country'), true);
$hits  = $index->find($query);

これでは結果が出ません。このオプションを削除するとtrue、検索が OR 検索 (country=US OR language=EN) に変換されます。

2 番目のアプローチの作成は、 http://framework.zend.com/manual/1.12/de/zend.search.lucene.query-api.htmlにあるドキュメントに基づいています。

4

1 に答える 1

0

検索で大文字を使用しないことで解決策を見つけました。

データフィールドが大文字であっても、小文字を検索すると解決しました。

機能したコード例:

$query = new Zend_Search_Lucene_Search_Query_MultiTerm();
$query->addTerm(new Zend_Search_Lucene_Index_Term('en', 'language'), true);
$query->addTerm(new Zend_Search_Lucene_Index_Term('us', 'country'), true);
$hits  = $index->find($query);

データ フィールドの値は "EN" と "US" であり、そのようにインデックスが作成されており、ドキュメント出力はこれを確認しますが、何らかの理由で検索には小文字の入力が必要です。

于 2012-11-27T20:07:20.583 に答える