Estoy usando Zend_Search_Lucene, el puerto PHP de Java Lucene. Actualmente tengo algún código que construirá una consulta de búsqueda basada en una matriz de cadenas, encontrando resultados para los cuales al menos un campo de índice coincida con cada una de las cadenas enviadas. Simplificada, que se parece a esto:Consultas de comodines de múltiples términos en Lucene?
(Nota: $ palabras es un conjunto construido a partir de la entrada del usuario.)
$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);
Lo que me como que hacer es sustituir $ palabra con ($ word. '*') - agregando un asterisco al final de cada palabra, convirtiéndolo en un término comodín.
Pero entonces, $ multiq tendría que ser un Zend_Search_Lucene_Search_Query_Wildcard en lugar de un Zend_Search_Lucene_Search_Query_MultiTerm, y no creo que todavía sería capaz de añadir múltiples Index_Terms a cada $ multiq.
¿Hay alguna manera de crear una consulta que sea tanto un comodín como un MultiTerm?
Gracias!