受欢迎的博客标签

Multi-language website:Multi-language support for text search in mongodb

Published

 I'm looking forward to having the following scenario implemented to allow for some very multi-language oriented documents. I'm sure it's not a simple matter however.   

db.text.ensureIndex({
    'text.body': 'text'
}, {
    language_override: "text.language"
})
 
db.text.insert({
    'text': [{
            'language': 'english',
            'code': 'en_US',
            'body': 'howdy howdy howdy'
        }, {
            'language': 'spanish',
            'code': 'es_MX',
            'body': 'hola hola hola'
        }
    ]
})
 
db.text.runCommand( "text", { search: "hola", language: "spanish" } )
{
	"results" : [ ],
    ...
    "ok" : 1
}
 
db.text.runCommand( "text", { search: "hola" } )
{
	"results" : [
		{
			"score" : 1.75,
			"obj" : {
				"_id" : ObjectId("5193f38b5dcd189ac143047d"),
				"text" : [
					{
						"language" : "english",
						"code" : "en_US",
						"body" : "howdy howdy howdy"
					},
					{
						"language" : "spanish",
						"code" : "es_MX",
						"body" : "hola hola hola"
					}
				]
			}
		}
	],
    ....
    "ok" : 1
}

Of course the following would be a test case as well:

db.text.ensureIndex({
    'text.en_US.body': 'text',
    'text.es_MX.body': 'text'
}, {
    default_language: "english"
})
 
db.text.insert({
    'text': {
        'en_US': {
            'language': 'english',
            'body': 'howdy howdy howdy'
        },
        'es_MX': {
            'language': 'spanish',
            'body': 'hola hola hola'
        }
    }
})