如何查找部分搜索?
现在我试图找到
db.content.find({$text: {$search: "Customer london"}})
它会找到与customer
匹配的所有记录,以及与london
匹配的所有记录。
如果我要搜索单词的一部分,例如lond
或custom
db.content.find({$text: {$search: "lond"}})
返回空结果。如何修改查询以获得与搜索london
时相同的结果?
答案 0 :(得分:1)
您可以使用正则表达式来解决它(https://docs.mongodb.com/manual/reference/operator/query/regex/)。但是,它适用于以下内容:
如果你有单词烹饪,以下查询可能会给你结果
如果您想更进一步,当您输入提示(错过V而不是C)时,请获取包含烹饪的结果文档,请转到elasticsearch。< / p>
Elasticsearch易于设置,具有极其强大的edge-ngram分析器,可将每个单词转换为较小的权重单词。因此,当您拼错时,您仍将获得基于弹性搜索得分的文档。
您可以在此处阅读:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-edgengram-tokenizer.html
答案 1 :(得分:0)
它会始终返回空数组以获取部分单词,例如当您搜索 lond 以获取此类文本 london ..
因为它需要完整的单词并且搜索与它们相同的内容。
没有达到相同的结果,如: -
LO LON LOND LONDO LONDON
您可以从 ELASTIC-SEARCH 获得帮助。使用mongoDB实现时,对于全文搜索非常有用。
由于
答案 2 :(得分:0)
全部找到一个数组
clientDB.collection('details').find({}).toArray().then((docs)
=>
我现在在for循环中使用str.StartWit
h来挑选我的记录。
if (docs[i].name.startsWith('U', 0)) {
return console.log(docs[i].name);
} else {
console.log('Record not found!!!')
};
这可能效率不高,但目前可以使用