我们有一个数据库,其中包含葡萄酒和啤酒的名称。我们正在使用MongoDB,每个葡萄酒或啤酒公司的文档结构如下所示:
{
name: String //this is the company name
products: [
{
name: String //this is the product's name
...
}
],
...
}
我已经在公司名称和产品名称上都创建了文本索引,文本搜索工作正常,但是没有按预期工作。例如,当某人搜索名为Bellissima的产品且他们发送的文本为Belisima或 Bellisima或该词的任何变体形式。
MongoDB的文本搜索是否有可能?如何使它更智能?我不是MongoDB专家,但我知道它与词干或某些词干有关,所以有办法修改吗?还是任何其他解决方法都能为用户提供最合适的结果?因为搜索Belisima不会返回任何结果,因为那不是保存在数据库中的确切单词。
您要查找的功能称为模糊搜索,而MongoDB不支持。可以在$text
中找到MongoDB中here索引的功能。
我建议的解决方案是将您的数据复制到全文搜索引擎中,例如Elasticsearch,提供Fuzzy Search。
您可以签出Mongo Connector以自动执行数据复制。