Quand je l'ai fait avec ElasticSearch, j'ai simplement mis en correspondance plusieurs champs pour chaque document, comme:
"text_val": {
"type": "text",
"fields": {
"en": {
"type": "text",
"analyzer": "english"
},
"it": {
"type": "text",
"analyzer": "italian"
}
}
}
Et puis il suffit de chercher les deux champs pour chaque requête. Cela fonctionne bien et est assez bon pour de nombreuses applications. Cependant, je suis sûr que Google fait quelque chose de beaucoup plus complexe, certainement l'identification de la langue sur les deux documents indexés et la requête. Dans le cas où vous voulez faire l'identification de la langue, j'ai utilisé python langid avant et j'ai eu de bons résultats. Le problème que vous allez rencontrer en utilisant elasticsearch pour ce genre de chose, d'après mon expérience, n'est pas la partie multi-langue, mais que les analyseurs pour les langues autres que l'anglais ne fonctionnent pas toujours aussi bien que vous voulez. Vous devrez peut-être écrire un analyseur personnalisé, avec des règles pour gérer un grand nombre de cas spéciaux, et réglé pour votre ensemble de données spécifique.