Diacritic Case-Insensitive search Loopback

时间:2015-11-02 14:53:44

标签: regex mongodb loopbackjs strongloop

有没有办法使用Diacritic-Case-Insensitive选项查询Loopback + MongoDB上的结果?

例如,如果我想搜索查询olimpic,并且数据库包含以下字词:

Olímpic
olimpic
Olimpic

然后,所有上述内容都应作为结果返回。 我尝试过下面列出的多个查询和其他组合,但到目前为止还没有任何工作。

{"where":{"name.text":{"like":"olimpic","options":"i"}}}
{"where":{"name.text":{"like":"/^olimpic$/i","options":"i"}}}
{"where":{"name.text":{"like":"/.*olimpic.*/i"}}}
{"where":{"name.text":{"regexp":"/.*olimpic.*/i"}}}

有什么想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:8)

对于MongoDB 3.1.7版本的text indices,您应该可以实现的目标。有关详细信息,请参阅SERVER-19557。早期的版本无法处理变音符号。

设置文本索引相当简单:只需在要搜索的所有字段上创建索引 - 每个集合只能有一个文本索引:

db.yourCollection.createIndex(
  {"name.text":"text","foo":"text"},
  {"default_language":"french"}
)

现在,要搜索索引,只需执行以下操作:

db.yourCollection.find(
  { $text: {$search:"Olimpic"} }
)

应该能给你预期的结果。

HTH