我正在使用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的查詢?
謝謝!