3

名前、クラブ、natranking、doublesranking、クラブ フィールドを含む検索フォームがあります。選択ボックスからクラブを選択し、名前フィールドを空白のままにして、[検索] をクリックしました。結果はノーヒット。その選択したクラブの一部であるデータベースには 3 つのレコードがあるため、3 つあるはずです。何故ですか?

どうも。

コントローラ クラス:

$search = $this->get('ewz_search.lucene');

// Create query
$terms = array(new Term($form->getData()->getName(), 'name'),
    new Term($form->getData()->getClub(), 'club'),
    new Term($form->getData()->getNatRanking(), 'natranking'),
    new Term($form->getData()->getNatDoublesRanking(), 'doublesranking')
);
$signs = array(TRUE, TRUE, TRUE, TRUE);
$query = new MultiTerm($terms, $signs);

// Get results 
$results = $search->find($query);

// Echo prints: "+name: +club:A.R.A. LA GANTOISE +natranking: +doublesranking:"
echo $query;

// This returns 0
die("debug: " . count($results);

//編集

これは機能します(3つの結果が得られます):

$manual_query = "+name: +club:A.R.A. LA GANTOISE +natranking: +doublesranking:";
4

1 に答える 1

1

Multiterm オブジェクトを文字列にキャストしたところ、動作するようになりました。ドキュメントの例は、文字列にキャストしなくても機能することを明確に示しているため、奇妙です。

ドキュメントからの例 (http://framework.zend.com/manual/en/zend.search.lucene.query-api.html#zend.search.lucene.queries.multiterm-query)

$query = new Zend_Search_Lucene_Search_Query_MultiTerm();

$query->addTerm(new Zend_Search_Lucene_Index_Term('word1'), true);
$query->addTerm(new Zend_Search_Lucene_Index_Term('word2', 'author'),
            null);
$query->addTerm(new Zend_Search_Lucene_Index_Term('word3'), false);

$hits  = $index->find($query);
于 2012-06-02T08:59:13.563 に答える