С новой функцией поиска Atlas есть способ избежать акцентов.
Я сделал этот индекс:
{
"analyzer": "lucene.standard",
"searchAnalyzer": "lucene.standard",
"mappings": {
"dynamic": false,
"fields": {
"_id": {
"type": "string",
"analyzer": "lucene.keyword"
},
"firstName": {
"type": "string",
"analyzer": "lucene.french"
},
"lastName": {
"type": "string",
"analyzer": "lucene.french"
},
"email": {
"type": "string",
"analyzer": "lucene.standard"
}
}
}
}
С этими данными:
db.testJTAFulltextSearch.insert({_id: "testFTS3", firstName: "René", lastName: "Martin", email: "rmartin@gmail.com"})
db.testJTAFulltextSearch.insert({_id: "testFTS4", firstName: "Rene", lastName: "Martin", email: "rmartin@gmail.com"})
И с этим поиском:
db.testJTAFulltextSearch.aggregate([{$searchBeta: {index: "customer", text: {query: "René", path: ["_id", "firstName", "email"]}}}])
Я получил:
{ "_id" : "testFTS3", "firstName" : "René", "lastName" : "Martin", "email" : "rmartin@gmail.com" }
Акценты не экранированы (é должен обрабатываться как ae). Я ожидал:
{ "_id" : "testFTS3", "firstName" : "René", "lastName" : "Martin", "email" : "rmartin@gmail.com" }
{ "_id" : "testFTS4", "firstName" : "Rene", "lastName" : "Martin", "email" : "rmartin@gmail.com" }
Есть ли способ избежать акцентов (диакритические знаки) с помощью поиска в Mongodb Atlas?
Я думаю, что мне нужен анализатор сворачивания ascii, но Я не нашел его в списке анализаторов: https://docs.atlas.mongodb.com/reference/atlas-search/analyzers/#analyzers -ref
Использование сортировки не работает:
db.testJTAFulltextSearch.aggregate([{$searchBeta: {index: "customer", text: {query: "René", path: ["_id", "firstName",
"email"]}}}], {collation: {locale: "en", strength: 1}})
По-прежнему возвращает только "Рене"