我正在使用Zend_Search_Lucene,Java Lucene的PHP端口。我目前有一些代码将根据字符串数组构建搜索查询,查找至少有一个索引字段与提交的每个字符串匹配的结果。简化的,它看起来像这样:Lucene中的多项通配符查询?
(注:$的话是从用户输入构造一个数组。)
$query = new Zend_Search_Lucene_Search_Query_Boolean();
foreach ($words as $word) {
$term1 = new Zend_Search_Lucene_Index_Term($word, $fieldname1);
$term2 = new Zend_Search_Lucene_Index_term($word, $fieldname2);
$multiq = new Zend_Search_Lucene_Search_Query_MultiTerm();
$multiq->addTerm($term1);
$multiq->addTerm($term2);
$query->addSubquery($multiq, true);
}
$hits = $index->find($query);
我会喜欢做的是与($替换$字 '*') - 在每个单词的末尾添加一个星号,将其变为通配术语。
但随后,$ multiq必须是一个Zend_Search_Lucene_Search_Query_Wildcard而不是Zend_Search_Lucene_Search_Query_MultiTerm,我不认为我会仍然能够多Index_Terms添加到每个$ multiq。
有没有办法构建一个既是通配符又是MultiTerm的查询?
谢谢!