2011-10-20 13 views
7

sto usando Solr per indicizzare i documenti in 3 langues (arabo, francese e inglese), ho usato questo fieldType:Solr per l'arabo

<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> 

Tutto era buono, ma in lingua araba, quando ho messo questo richiesta di cercare una parola come حقل Solr non trova la parola, ma quando metto la parola in opposto لقح da sinistra a destra, Solr trova la parola e restituisce il risultato.

Posso avere risultato alla parole arabe?

+1

Non conosco alcun meccanismo che possa invertire l'ordine del testo RTL in Solr. Generalmente, la gente scopre che vogliono una sorta di lemmatizzazione in arabo per gestire tutte le forme flesse. Che cosa stai usando per costruire l'interfaccia utente in cui stai digitando i termini di ricerca? – bmargulies

+0

Sto usando una pagina web, anche nel mio test uso Eclipse direttamente con API solrj. –

+2

Stai per caso estendendo il tuo testo da file PDF? Se è così ci sembra essere un problema noto con Tika: https://issues.apache.org/jira/browse/TIKA-469?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12995516 –

risposta

5

ho intenzione di trasformare l'analisi intelligente di Daniele qui per una risposta per il record. Non votare per questo, basta andare a trovare qualcosa di suo a votare per :-)

Ci sono due modi per ottenere una mancata corrispondenza direzionalità con testo RTL. Puoi indicizzarlo all'indietro oppure puoi richiederlo all'indietro. Un semplice modulo HTML che interroga Solr non rovinerà mai la direzionalità. A questo proposito, khaled stava estraendo il testo da un PDF utilizzando una libreria che cadeva vittima della tendenza dei PDF a contenere il testo di "ordine visivo" piuttosto che "ordine logico". Quindi l'indice era pieno di arretrati arabo. Per risolvere questo problema, dovrà inventare una libreria funzionante che estrae il testo dai pdf.

Forzare Apache Tika di utilizzare l'ultima Apache PDFBox potrebbe aiutare, o il suo PDF può essere così eccentrico che anche l'ultima PDFBox non è in grado di gestirlo. Nel qual caso ha un problema difficile.

+1

Grazie bmargulies, ho incluso ICU4J.jar nel mio progetto, ora Tika può estrarre testo arabo senza alcun problema. –

+0

Si prega di khaled Mabrouk Ho lo stesso problema, puoi solo dare la soluzione nella seguente domanda: http://stackoverflow.com/questions/10076959/how-to-parse-arabic-pdf-with-tika –

+0

Ciao Khaled, cosa intendi con "include ICU4J" nel progetto? Non ho idea di come possa essere fatto. Qualcuno può far luce su questo? –