2017-01-29 4 views
1

Dans mon solr schema.xml je définissais champ Nom arabe produit comme ci-dessousComment rechercher des mots arabes dans solr

<field name="productNameArabic" type="text_ar" indexed="true" stored="true"/> 
    <fieldType name="text_ar" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ar.txt" /> 
     <filter class="solr.ArabicNormalizationFilterFactory"/> 
     <filter class="solr.ArabicStemFilterFactory"/> 
     </analyzer> 
    </fieldType> 

À la recherche Solr Je veux rechercher le nom du produit en utilisant des lettres arabes. Pendant la recherche, l'utilisateur arabe peut se sentir peu par défaut pour rechercher un nom de produit. Parce que certains caractères doivent être mentionnés lors de la recherche.

Ex: إ أ آ

Dans les caractères mentionnés ci-dessus, l'utilisateur peut obtenir la combinaison de touche Maj enfoncée. Habituellement, si les gens arabes mentionneront le caractère "ا" et obtiendront les mots combinés ci-dessous.

Ex: إبرا

Dans mon solr schema.xml je définissais champ Nom arabe produit comme ci-dessous

+0

Alors, quel est votre problème? Avez-vous eu une exception ou quelque chose? – Mysterion

+0

Mon problème est si vous appuyez sur le caractère "ا", recherche solr correspondant à ces mots de caractères seulement. Je veux que si j'appuie sur le caractère "" ", Solr devrait aussi chercher إ أ آ les mots de caractères combinés. Il n'y a pas d'exception – Mohan

Répondre

0

j'ai pu obtenir une fonctionnalité souhaitée en ajoutant ASCIIFoldingFilter, ce filtre est capable de supprimer les accents de différentes langues , pour les rendre similaires dans le temps de l'index.

<fieldType name="arabic" class="solr.TextField" positionIncrementGap="100"> 
      <analyzer> 
       <tokenizer class="solr.StandardTokenizerFactory"/> 
       <filter class="solr.LowerCaseFilterFactory"/> 
       <filter class="solr.ASCIIFoldingFilterFactory"/> 
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ar.txt" /> 
       <filter class="solr.ArabicNormalizationFilterFactory"/> 
       <filter class="solr.ArabicStemFilterFactory"/> 
      </analyzer> 
</fieldType> 

Plus d'informations sur ce filtre - here. Exemple de code de travail - here

+0

merci pour l'enquête de notre problème, j'ai essayé avec l'exemple ci-dessus, mais ça ne fonctionne pas comme nous l'espérions résultat .. S'il vous plaît se référer le document j'ai expliqué recherche arabe résultat attendu. En utilisant ce lien s'il vous plaît télécharger le document https://www.sendspace.com/file/3d4ori – Mohan

+0

@ Mohan, quelle est la sortie là-bas et celle attendue? – Mysterion

+0

S'il vous plaît se référer au document (télécharger à partir de https://sendspace.com/file/3d4ori cette règle) ... Dans ce document tableau 1 j'ai mentionné les valeurs d'index et le résultat attendu. Ex: Prendre cas: 1 si entrer المؤسسة التجارية cela je devrais obtenir المؤسسة التجارية العمانية ce résultat. mais maintenant je ne suis pas capable d'obtenir le résultat. – Mohan