2017-09-26 9 views
0

Je sais qu'il existe des questions similaires à propos de SOLR, certains donnent des idées, mais pas une solution pour exaclty ce que je suis en train de faire.SOLR indexation des données SQL par langue/multi-langue

Je voudrais créer un noyau ayant des données multi-langue. Par exemple, il est possible d'avoir un champ comme description_fr, description_en. Je souhaite envoyer la description en cas de demande de données en français et n'envoyez pas la description.

Certaines de mes questions:

  1. Comment définir les données à indexer
  2. Comment puis-je dire à l'application de demander la recherche contre la version anglaise ou française des champs?

Merci beaucoup

+0

Comment vous données indexation - Qu'avez-vous essayé? Avez-vous regardé [Détecter les langues lors de l'indexation] (https://lucene.apache.org/solr/guide/6_6/detecting-languages-during-indexing.html)? – MatsLindh

+0

Oui, j'indexe mes données par DIH. Par ligne j'ai une donnée ayant les deux langues. Par exemple, j'ai une ligne avec les colonnes suivantes - ID, NAME, DESCRIPTION_FR, DESCRIPTION_EN. Je veux envoyer toutes les colonnes à l'utilisateur en fonction de sa langue - ID, NOM, DESCRIPTION_EN si la langue est EN et n'envoyez PAS DESCRIPTION_EN dans ce cas. J'ai vu les langages de détection, mais je ne comprends pas clairement comment utiliser et si c'est ce que je devrais faire. Je dois essayer – Vicking

+0

Maintenant, en cherchant le LangDetectLanguageIdentifierUpdateProcessorFactory je ne suis pas sûr de pouvoir l'utiliser car langid.langField nécessite un champ pour la détection et ma ligne contient les deux langues. Savez-vous si je peux l'utiliser quand même? – Vicking

Répondre

0

Je recommande un discours d'un de mes amis au plus tard à Berlin Buzzwords [1]

Cela pourrait être intéressant de vous pour l'avenir. En m'appuyant sur votre question actuelle, je continuerais à identifier la langue de la requête (ce qui est une tâche difficile car la requête est généralement composée de quelques termes). Puis, en fonction de la langue, je voudrais envoyer à Solr une demande de retourner seulement 1 champ stocké pour le contenu.

par exemple.

Dans l'index I ont:

description_it, description_en

q = "prodotto scalare" indique la langue: il

Demande: http://localhost:8983/solr/select?q=prodotto scalare & fl = description_it

Vous venez besoin d'une bibliothèque pour détecter la langue [2] et un mappage entre le code ISO de la langue et vos champs solr. Vous pouvez le créer au moment de l'API ou directement dans Solr en tant que plugin.

[1] https://berlinbuzzwords.de/sites/berlinbuzzwords.de/files/media/documents/embracing_diversity_searching_over_multiple_languages.pdf

[2] Quelques exemples populaires: (par DIH) Tika - - https://www.programcreek.com/java-api-examples/index.php?api=org.apache.tika.language.LanguageIdentifier Google https://github.com/shuyo/language-detection

+0

Merci, la présentation est intéressante. En fait pour mes données j'ai juste besoin de retourner la colonne correspondant à la langue afin de limiter l'API appelante à ne pas spécifier quelles colonnes retourner. L'API envoie une recherche par un mot commun pour toutes les langues et reçoit toutes les données concernant cette clé, mais les autres champs sont spécifiques à la langue. – Vicking