我正在使用Zend Lucene并想知道是否可以将范围查询与多项查询结合起来执行单个搜索操作。
例如,您构建一个范围查询,如下所示:
$from = new Zend_Search_Lucene_Index_Term('20020101', 'mod_date');
$range = new Zend_Search_Lucene_Search_Query_Range(
$from, null, true // inclusive
);
然后构建一个像这样的多项查询:
//this example uses only 1 term but the real use case has many terms forming the multiterm
$multi_term = Zend_Search_Lucene_Search_Query_MultiTerm(new Zend_Search_Lucene_Index_Term('foo','title'));
然后不知何故,
$combined = combine($range,$multi_term);
$hits = $index->find($combined);
Zend Lucene是否可以这样做?
答案 0 :(得分:4)
使用布尔查询。
$query = new Zend_Search_Lucene_Search_Query_Boolean();
$rangeQuery = ...
$multiTermQuery = ...
$query->addSubquery($rangeQuery, true)
$query->addSubquery($multiTermQuery, true)
答案 1 :(得分:0)
一种较少的编程方式,但同样有效(这与当前ZendSearch
有关)是动态构建查询字符串而不是代码。
例如:
+mod_date:[20020101 TO 20030101] +foo:bar
将其传递给query
函数并允许它。从我的角度来看,问题是同一查询中的模糊查询和关键字。在代码中,它是不可能的,但可以使用查询字符串完成。