1
在ZF2我使用下面的代码来生成一个Lucene查询:ZF2 Lucene的查询返回任何内容 - 卢克同一查询返回预期的结果
$query = new Lucene\Search\Query\Boolean();
$term = new Lucene\Index\Term($search->type, 'type');
$subqueryTerm = new Lucene\Search\Query\Term($term);
$query->addSubquery($subqueryTerm, true);
$term = new Lucene\Index\Term('[+<= ' . $search->purchase_value . ']', 'min_price');
$subqueryTerm = new Lucene\Search\Query\Term($term);
$query->addSubquery($subqueryTerm, true); // required
$term = new Lucene\Index\Term('[' . $search->purchase_value . ' >=]', 'max_price');
$subqueryTerm = new Lucene\Search\Query\Term($term);
$query->addSubquery($subqueryTerm, true); // required
产生以下查询:
+(type:Buying) +(min_price:[+<= 160.00]) +(max_price:[160.00 >=])
当我在ZF2中运行这个查询时($hits = $index->find($query);
),我得到一个返回的空数组,但是当我使用Luke手动对索引运行查询时,它返回我期待的结果。
我需要在我的代码中进行更改以使其返回与Luke相同的结果?
我使用的是默认的分析这两个系统:
- 卢克:
org.apache.lucene.analysis.KeywordAnalyzer
- ZF2:(我认为是)
\ZendSearch\Lucene\Analysis\Analyzer\Common\Text
我需要使用不同的QueryParser?
认为它可能与我使用'str_pad($ input,10,0,STR_PAD_LEFT)'的数量的长度有关,所以存储的值与'0000432.10'类似。我也以相同的方式格式化查询。同样,它适用于Luke,但不适用于ZF2。 –