2011-01-18 13 views
5

En mi IndexController que tengocaracteres no válidos para la búsqueda de texto Lucene

public function buildAction() 
    { 

    $index = Zend_Search_Lucene::create(APPLICATION_PATH . '/indexes');  

    foreach ($this->pages as $p) { 
     $doc = new Zend_Search_Lucene_Document(); 

     $doc->addField(Zend_Search_Lucene_Field::unIndexed('page_id', $p['page_id'])); 

     $doc->addField(Zend_Search_Lucene_Field::text('page_name', $p['page_name'])); 

     $doc->addField(Zend_Search_Lucene_Field::text('page_headline', $p['page_headline'])); 

     $doc->addField(Zend_Search_Lucene_Field::text('page_content', $p['page_content'])); 


     $index->addDocument($doc); 
    } 
    $index->optimize(); 
    $this->view->indexSize = $index->numDocs(); 
    } 

y estoy consiguiendo error

[Tue Jan 18 16:23:32 2011] [error] [client 127.0.0.1] PHP Notice: iconv(): Detected an illegal character in input string in /usr/share/php/libzend-framework-php/Zend/Search/Lucene/Analysis/Analyzer/Common/Text.php on line 58 
[Tue Jan 18 16:23:32 2011] [error] [client 127.0.0.1] PHP Notice: iconv(): Detected an illegal character in input string in /usr/share/php/libzend-framework-php/Zend/Search/Lucene/Field.php on line 222 
[Tue Jan 18 16:23:32 2011] [error] [client 127.0.0.1] PHP Notice: iconv(): Detected an illegal character in input string in /usr/share/php/libzend-framework-php/Zend/Search/Lucene/Analysis/Analyzer/Common/Text.php on line 58 
[Tue Jan 18 16:23:32 2011] [error] [client 127.0.0.1] PHP Notice: iconv(): Detected an illegal character in input string in /usr/share/php/libzend-framework-php/Zend/Search/Lucene/Field.php on line 222 
[Tue Jan 18 16:23:32 2011] [error] [client 127.0.0.1] PHP Notice: iconv(): Detected an illegal character in input string in /usr/share/php/libzend-framework-php/Zend/Search/Lucene/Analysis/Analyzer/Common/Text.php on line 58 
[Tue Jan 18 16:23:32 2011] [error] [client 127.0.0.1] PHP Notice: iconv(): Detected an illegal character in input string in /usr/share/php/libzend-framework-php/Zend/Search/Lucene/Field.php on line 222 

y variables

$this->pages 

contienen gama de texto copiado de Wikipedia y recibo un error para los caracteres - (no -) y ö para los que obtengo un error (creo). obtuve una pregunta similar importante en Lucene foreign chars problem que no explica dónde hacer qué. Por favor, le agradecería si sé dónde hacer qué y también un poco de explicación

ACTUALIZACIONES :: iconv

iconv support   enabled 
iconv implementation glibc 
iconv library version 2.12.1 
+0

¿Puedes verificar qué versión de iconv eres? usando desde 'phpinfo()'? – Randell

+0

@Randell por favor, eche un vistazo a las actualizaciones –

+0

Justo como sospechaba. Tengo el mismo problema ahora mismo. Zend Lucene funciona bien en Mac OS X y en Windows XP, donde la implementación de iconv está en libiconv en lugar de glibc. Tampoco sé la solución todavía. – Randell

Respuesta

10

Trate de añadir esto a su archivo de arranque:

Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8'); 
Zend_Search_Lucene_Analysis_Analyzer::setDefault(
    new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive() 
); 
+0

muchas gracias! – virtualize

+0

Sí, muchas gracias. Esto eliminó el mismo error para mí. Muy apreciado. –

+0

Excelente funcionó para mí. – locrizak

4

Excepto en el código bootsrap para agregar la codificación del tercer parámetro para índices basados ​​en texto

$doc->addField(Zend_Search_Lucene_Field::text('page_name', $p['page_name'], 'UTF-8')); 
Cuestiones relacionadas