Sto utilizzando Zend_Search_Lucene, il port PHP di Java Lucene. Al momento ho del codice che costruirà una query di ricerca basata su un array di stringhe, trovando risultati per i quali almeno un campo indice corrisponde a ciascuna delle stringhe inviate. Semplificato, sembra che questo:Quesiti con caratteri jolly a termine multiplo in Lucene?
(Nota: $ parole è un array costruito da input dell'utente.)
$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);
Quello che vorrei come da fare è sostituire $ parola con ($ word. '*') - aggiungendo un asterisco alla fine di ogni parola, trasformandolo in un termine jolly.
Ma poi, $ multiq avrebbe dovuto essere un Zend_Search_Lucene_Search_Query_Wildcard invece di un Zend_Search_Lucene_Search_Query_MultiTerm, e non credo che sarei ancora in grado di aggiungere più Index_Terms ad ogni $ multiq.
C'è un modo per costruire una query che è sia una Wildcard che una MultiTerm?
Grazie!