我正在进行全文搜索,需要短语或字词。
如果$ search字符串包含短语和单个术语,则文本搜索将仅匹配包含该短语的文档。更具体地说,搜索使用搜索字符串中的各个术语执行短语的逻辑AND。
例如,传递$ search字符串:
"\"ssl certificate\" authority key"
$ text运算符搜索短语" ssl certificate" 和("权限"或"键"或" ssl"或"证书")。
是否可以通过MongoDB本地执行此操作?我现在看到的另一种方式是在顶部使用弹性搜索。
更新 - 以下搜索不起作用,将导致BadValue Too many text expressions
错误:
{
$or: [{
$text: {
$search: "\"ssl certificate\""
}
}, {
$text: {
$search: "authority key"
}
}]
}
答案 0 :(得分:2)
本机执行此操作的唯一方法是执行多个查询 - 每个短语一个,所有独立单词一个 - 然后将结果合并到应用程序层。
当相关性排名对您的用例很重要时,have mongodb also give you the text score并在合并结果时使用它。