0

インデックスにこのフィールドがあります

id    name                   genders          ages
1     "John Doe and Co."     "male male"      "18 20" 
2     'Mr. and Mrs. Joe Dee' "male female"    "25 27"

これが両方の行を取得するためのコードです

$min_age = '19'
$max_age = '26';

$ages_query = new Zend_Search_Lucene_Search_Query_Range(new Zend_Search_Lucene_Index_Term($min_age, 'ages'), new Zend_Search_Lucene_Index_Term($max_age, 'ages'), TRUE);

$lucene_query = new Zend_Search_Lucene_Search_Query_Boolean();
$lucene_query->addSubquery($ages_query, null);

2行目だけを返します。範囲クエリに基づいて明確に返される必要があるのに、なぜ最初の行を取得できなかったのですか?

4

1 に答える 1

0

これは年齢フィールドの形式が間違っています。2つのフィールドに分割する必要があります

age_from : 18
age_to   : 20

クエリ:-

 +age_from:[19 TO *]
 +age_to:[* TO 26 *]

この質問に関連しているかどうかはわかりません:Zend Luceneと、複数の値を持つフィールドでの範囲検索

ただし、CSVをluceneに保存しないという考え方です。

于 2011-12-15T15:40:31.623 に答える