MongoDB与变音符号不敏感

时间:2016-08-31 00:18:56

标签: mongodb meteor

我已阅读并重新阅读docs,在SO和Google上寻找答案,但我找不到理由。

我有一个我声明的集合

import { Meteor } from 'meteor/meteor'

export default InventoryItems = new Meteor.Collection('inventory-items');


if (Meteor.isServer) {
  // https://docs.mongodb.com/manual/tutorial/control-results-of-text-search/

  InventoryItems._ensureIndex({ sku: 1 }, {
    name: 'UniqueIndex',
    unique: true
  });

  InventoryItems._ensureIndex({ sku: 'text', name: 'text', description: 'text' }, {
    name: 'SearchIndex',
    weights: {
      sku: 10,
      name: 5,
      description: 1
    },
    default_language: 'french'
  });
}

然后,给出这些条目

InventoryItems.insert({ sku:'B-WA', name:'Barrière WA', description:'' });
InventoryItems.insert({ sku:'B-WT', name:'Barrière WT', description:'' });
InventoryItems.insert({ sku:'B-WL', name:'Barrière WL', description:'' });

并搜索

InventoryItems.find({ $text: { $search: 'barrier' } });

它会返回整个集合,但如果我这样做

InventoryItems.find({ $text: { $search: 'barriere' } });

它返回没有¯\_(ツ)_/¯

为什么第一个匹配,而另一个匹配?

1 个答案:

答案 0 :(得分:0)

我认为原因在于阻塞功能会将单词缩减为根基。在你的情况下,标记器只是让你的话语"屏障"。 找到这个blog,在文本索引上有一篇关于这个(以及其他标记化器功能)的非常好的文章。