有了新的 Atlas Search 功能,就有了一种逃避口音的方法。
我做了这个索引:
{
"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 Search 来逃避口音(变音符号)?
我想我需要一个 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}})
仍然只返回“René”