2011-10-04 3 views
1

Je suis nouveau dans SOLR. J'ai un problème. Je mets des données dans SOLR via XML, les données en allemand, par exemple:Solr non-anglais indexation et recherche

<?xml version="1.0" encoding="utf-8" ?> 
<add> 
<doc> 
    <field name="id">1</field> 
    <field name="name">Größen helfen, ihr Potenzial voll zu entfalten. Sicherheit und Zuverlässigkeit, Innovation und Integration sowie</field> 
</doc> 
</add> 

Ce document enregistré avec succès, quand je recherche à partir du panneau d'administration avec la requête « nom: * » il retourne, mais lorsque je tente de chercher avec cette requête "nom: * uverlässigkeit *" elle ne retourne pas. Je pense que c'est un problème avec la langue allemande, mais je ne sais pas comment résoudre ce problème. Quelqu'un pourrait-il m'aider à comprendre ce qui ne va pas?

Répondre

1

Vous ne pouvez pas effectuer de recherches en commençant par un caractère générique - seuls les caractères génériques de suffixe sont autorisés dans une requête de recherche (car il devrait sinon analyser tous les termes associés à un document). Si vous avez besoin d'effectuer une recherche sur un préfixe, indexez le terme inversé (mais sachez que cela pourrait désactiver d'autres fonctionnalités si vous utilisez vos champs sans trop réfléchir à ce que vous cherchez) et la recherche dans ce champ avec un wildcard de postfix. Notez également que votre conteneur d'application (par exemple Jetty, Tomcat, etc.) doit être compatible UTF-8 (pour Tomcat, vous devrez le configurer spécifiquement) pour une recherche sur les chaînes UTF-8. correctement.

+0

Merci. J'ai ajouté URIEncoding = "UTF-8" dans server.xml (Tomcat) et maintenant la recherche fonctionne bien. – vladimir

0

Alternativement, il pourrait aussi être une bonne idée d'utiliser le filtre suivant dans votre analyseur requête/index:

<filter class="solr.ASCIIFoldingFilterFactory"/> 

Cela remplace les trémas allemands avec leurs parents ASCII standard et améliore la correspondance.

0

Quel gestionnaire de requêtes utilisez-vous?
Les gestionnaires de requêtes standard ne prennent pas en charge les requêtes génériques de premier plan.

donc nom: uverlässigkeit ne fonctionnerait pas.

Si vous souhaitez utiliser des requêtes génériques de premier plan, vous devez vérifier l'analyseur étendu Dismax qui permet d'activer les caractères génériques. Cependant, il y a toujours un impact sur les performances avec les caractères génériques.

La correspondance pour les caractères étrangers fonctionne bien avec solr.Cependant, vous devez être cohérent avec l'analyse à l'index et l'heure de la requête, si vous utilisez ASCII Folding ou ISO Latin Filter.

En outre, comme fiskfisk mentionné, vous devez ajouter l'encodage dans Tomcat, si vous l'utilisez le conteneur Web.

+0

Désolé mais je ne comprends pas très bien ce que vous voulez dire "Quel gestionnaire de requêtes utilisez-vous", j'utilise tout par défaut. Pourriez-vous s'il vous plaît me donner un lien où je peux lire à ce sujet. – vladimir

+0

Vous différentiez les gestionnaires de requêtes en utilisant qt param. Si, par défaut, il ne prend pas en charge les caractères génériques principaux. Vous devez utiliser deftype comme edismax pour vérifier sur l'analyseur de requête Extended Dismax. – Jayendra