2011-10-20 15 views
7

estoy usando Solr para indexar documentos en 3 langues (árabe, francés e inglés), que han utilizado este FieldType:Solr para árabe

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/> 
     <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

Todo era bueno, pero en idioma árabe cuando pongo esta solicitar para buscar una palabra como حقل Solr no encuentra la palabra, pero cuando pongo la palabra en لقح de izquierda a derecha Solr encuentra la palabra y devuelve el resultado.

¿Puedo obtener un resultado para palabras en árabe?

+1

No conozco ningún mecanismo que pueda invertir el orden del texto RTL en Solr. Generalmente, la gente encuentra que quiere algún tipo de lematización en árabe para manejar todas las formas flexionadas. ¿Qué estás usando para construir la UI en la que estás escribiendo los términos de búsqueda? – bmargulies

+0

Estoy usando una página web, también en mi prueba uso Eclipse directamente con API solrj. –

+2

¿Está usted por casualidad extrayendo su texto de archivos PDF? Si es así, parece haber un problema conocido con Tika: https://issues.apache.org/jira/browse/TIKA-469?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12995516 –

Respuesta

5

Voy a convertir el inteligente análisis de Daniel aquí en una respuesta para el registro. No vote por esto, simplemente busque algo de su voto :-)

Hay dos maneras de obtener una discrepancia de direccionalidad con el texto RTL. Puede indexarlo hacia atrás, o puede consultarlo al revés. Un simple formulario HTML que consulte Solr nunca arruinará la direccionalidad. En este cuidado, khaled extraía texto de un PDF usando una biblioteca que es víctima de la tendencia de los PDF a contener texto de "orden visual" en lugar de "orden lógico". Entonces el índice estaba lleno de árabe hacia atrás. Para solucionar esto, tendrá que crear una biblioteca que extraiga texto de pdfs.

Obligar a Apache Tika a utilizar la última versión de Apache PDFbox podría ayudar, o su PDF puede ser tan peculiar que incluso la última PDFBox no puede manejarlo. En cuyo caso, tiene un problema difícil.

+1

Gracias bmargulies, he incluido ICU4J.jar en mi proyecto, ahora Tika puede extraer texto en árabe sin ningún problema. –

+0

Por favor, khaled Mabrouk Tengo el mismo problema, ¿puede dar la solución en la siguiente pregunta: http://stackoverflow.com/questions/10076959/how-to-parse-arabic-pdf-with-tika –

+0

Hola Khaled, ¿A qué te refieres con "incluir ICU4J" en el proyecto? No tengo idea de cómo se puede hacer esto. ¿Alguien puede arrojar algo de luz sobre esto? –