0

有了新的 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é”

4

1 回答 1

0

你试过fuzzy配置吗?默认情况下似乎没有启用它,但fuzzy: { maxEdits: 2 }应该已经涵盖了。

我最近遇到了类似的问题,但发现实际上是我在那里设置了错误的配置(prefixLength: 1而不是默认值0)的错 - 请参阅线程。就我而言,我使用的是term运算符而不是text,但我不确定这有多相关。

于 2020-03-27T17:11:25.453 回答