我已阅读并重新阅读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' } });
它返回没有! ¯\_(ツ)_/¯
为什么第一个匹配,而另一个匹配?
答案 0 :(得分:0)
我认为原因在于阻塞功能会将单词缩减为根基。在你的情况下,标记器只是让你的话语"屏障"。 找到这个blog,在文本索引上有一篇关于这个(以及其他标记化器功能)的非常好的文章。