2010-05-16 6 views
6

uso de Zend Lucene no puedo números de búsqueda en los campos de descripciónZend Lucene - no puede buscar números de

Añadido así:

$doc->addField(Zend_Search_Lucene_Field::Text('description', $current_item['item_short_description'], 'utf-8')); 

Google para esta mostraron que la aplicación siguiente código debería resolver el problema, pero no ..:

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive()); 

any thougts?

Respuesta

8

Debe configurar el analizador predeterminado dos veces: en el proceso de indexación y en el proceso de búsqueda.

utilizar la línea de código de arriba:

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive()); 
0

no estoy seguro acerca de 'Zend', pero por acuerdo con el número de Lucene, es necesario el uso siguiente técnica:

  • Para poder hacer int para documentar el uso siguiente:

    document.Add (nuevo campo (FIELD_SPEC, NumberTools.LongToString (YOUR_INT), Field.Store.YES, Field.Index.UN_TOKENIZED));

  • Para localizar el valor de uso Plazo: Plazo (FIELD_SPEC, NumberTools.LongToString (YOUR_INT))

+0

¿Cómo lo uso para la descripción? Quiero que los números dentro de la descripción puedan buscarse. No solo tengo un "entero seprate". –

+0

@Pavel Dubinin: mira mi nota: "Para localizar el uso del valor Término: ..." Así que cuando necesites buscar, crea esto como parte de BooleanQuery donde Term se construye usando NumberTools. Un poco complicado si usa el analizador Qury estándar - en este caso, realice el preproceso reemplazando todos los números en las consultas por el valor renderizado. – Dewfy

1

¿Utilizó ese comando antes o después de llamar Zend_Search_Lucene :: Open()?

Llamarlo de antemano definitivamente funciona.

Cuestiones relacionadas