2

ユーザーが名前、クラブ名などで他のユーザーを検索できる webapp に検索フォームがあります...これは検索に使用しているコードですが、「ヒット」がありません。

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

$query = new MultiTerm();
$query->addTerm(new Term($form->getData()->getName()));
$query->addTerm(new Term($form->getData()->getClub()->getId()));

// See point 1 to see what this displays
var_dump($query);

// See point 2 to see what this displays
die("debug: " . $query);

// If I use this instead of the MultiTerm, I do get a hit
// $query = 'Mathew';

$hits = $search->find($query);

ポイント1: object(Zend\Search\Lucene\Search\Query\MultiTerm)#644 (9) { ["_terms":"Zend\Search\Lucene\Search\Query\MultiTerm":private]=> array(2) { [0]=> object(Zend\Search\Lucene\Index\Term)#638 (2) { ["field"]=> NULL ["text"]=> string(12) "Mathew" } [1] => object(Zend\Search\Lucene\Index\Term)#637 (2) { ["field"]=> NULL ["text"]=> int(1) } } ["_signs":"Zend\Search \Lucene\Search\Query\MultiTerm":private]=> array(2) { [0]=> NULL [1]=> NULL } ["_resVector":"Zend\Search\Lucene\Search\Query\MultiTerm" :private]=> NULL ["_termsFreqs":"Zend\Search\Lucene\Search\Query\MultiTerm":private]=> array(0) { } ["_coord":"Zend\Search\Lucene\Search\Query \MultiTerm":private]=>NULL ["_weights":"Zend\Search\Lucene\Search\Query\MultiTerm":private]=> array(0) { } ["_boost":"Zend\Search\Lucene\Search\Query\AbstractQuery":private ]=> int(1) ["_weight":protected]=> NULL ["_currentColorIndex":"Zend\Search\Lucene\Search\Query\AbstractQuery":private]=> int(0) }

ポイント 2: デバッグ: マシュー 1

どうも。

4

2 に答える 2

2

デフォルトの項演算子を確認してください。clubid と name に個別のフィールド インデックスがある場合は、フィールド名にプレフィックスを付けることができます。

$query = "name:Mathew AND clubid:1";

詳細については、パーサーの構文を参照してください。

于 2012-05-19T09:26:33.220 に答える
0

それを見つけた!私はこれを持っていました:

$document->addField(Field::text('Name', $user->getName()));

それ以外の:

$document->addField(Field::text('name', $user->getName()));
于 2012-05-23T18:09:30.487 に答える