LoopbackJS 上的变音符号不敏感搜索
Diacritic insensitive search on LoopbackJS
本题参考:
我尝试添加以下索引 - 我的 NsUser
模型的 firstname
和 lastname
就像@Markus_W_Mahlberg 建议的 - 环回方式。
{
"name": "NsUser",
"base": "User",
"idInjection": true,
"options": {
"validateUpsert": true
},
"indexes": {
"firstname": "text" ,
"lastname": "text"
},
"properties": {
"firstname": {
"type": "string"
},
"lastname": {
"type": "string"
}
…
}
…
}
我还在我的 server.js 中使用自动更新脚本来确保索引按照此处建议的方式工作:https://github.com/strongloop/loopback-connector-mongodb/issues/103
我的 MongoDB shell 版本是:3.2.3
还是不行。有什么想法吗?
编辑:
回答 Pawan -
当我使用 Mongo 显示我的索引时:
> db.NsUser.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "needsporty_DB.NsUser"
},
{
"v" : 1,
"key" : {
"text" : 1
},
"name" : "firstname",
"ns" : "needsporty_DB.NsUser"
},
{
"v" : 1,
"key" : {
"_fts" : "text",
"_ftsx" : 1
},
"name" : "diatrics_insensitive_keys",
"ns" : "needsporty_DB.NsUser",
"weights" : {
"firstname" : 1,
"lastname" : 1
},
"default_language" : "english",
"language_override" : "language",
"textIndexVersion" : 3
}
]
在 model.json 文件中声明索引的语法是
"indexes": {
//A composite index two keys: key1 in ascending order and key2 in descending order
"<indexName>": { "<key1>": 1, "<key2>" : -1 }
//single field index
"<indexName>": { "<key1>" : 1 }
// for text indexes
"<indexName>": { "<key1>" : "text" }
}
勾选 docs
所以相应地改变你的索引对象,因为一个集合最多可以有 one text index,所以在这里你需要创建一个包含名字和姓氏的复合文本索引,即
"indexes": {
"textSearchName" : { "firstname" : "text", "lastname" : "text" }
}
本题参考:
我尝试添加以下索引 - 我的 NsUser
模型的 firstname
和 lastname
就像@Markus_W_Mahlberg 建议的 - 环回方式。
{
"name": "NsUser",
"base": "User",
"idInjection": true,
"options": {
"validateUpsert": true
},
"indexes": {
"firstname": "text" ,
"lastname": "text"
},
"properties": {
"firstname": {
"type": "string"
},
"lastname": {
"type": "string"
}
…
}
…
}
我还在我的 server.js 中使用自动更新脚本来确保索引按照此处建议的方式工作:https://github.com/strongloop/loopback-connector-mongodb/issues/103
我的 MongoDB shell 版本是:3.2.3
还是不行。有什么想法吗?
编辑: 回答 Pawan - 当我使用 Mongo 显示我的索引时:
> db.NsUser.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "needsporty_DB.NsUser"
},
{
"v" : 1,
"key" : {
"text" : 1
},
"name" : "firstname",
"ns" : "needsporty_DB.NsUser"
},
{
"v" : 1,
"key" : {
"_fts" : "text",
"_ftsx" : 1
},
"name" : "diatrics_insensitive_keys",
"ns" : "needsporty_DB.NsUser",
"weights" : {
"firstname" : 1,
"lastname" : 1
},
"default_language" : "english",
"language_override" : "language",
"textIndexVersion" : 3
}
]
在 model.json 文件中声明索引的语法是
"indexes": {
//A composite index two keys: key1 in ascending order and key2 in descending order
"<indexName>": { "<key1>": 1, "<key2>" : -1 }
//single field index
"<indexName>": { "<key1>" : 1 }
// for text indexes
"<indexName>": { "<key1>" : "text" }
}
勾选 docs
所以相应地改变你的索引对象,因为一个集合最多可以有 one text index,所以在这里你需要创建一个包含名字和姓氏的复合文本索引,即
"indexes": {
"textSearchName" : { "firstname" : "text", "lastname" : "text" }
}