我正在开发一个搜索功能,在这个功能中,我必须对大约30万份文档执行搜索操作。为此,我在四个字段上创建了一个复合索引,并给出了它们的权重。默认情况下,如果我搜索一个具有多个单词的短语,那么猫鼬就会搜索所有带有或操作的关键字。例句:如果你搜索小细胞肺,那么猫鼬会搜索其中任何一个都可用的所有文档。它运行得很快。
但我的要求是执行和操作。为了实现这一点,我将所有单词分割成一个短语,然后将它们放入双quotes.So中,当用户搜索一个具有多个单词的短语时,搜索操作将作为和操作对每个单词执行。如果您搜索小细胞肺(“小”“细胞”“肺”),那么它应该找到所有可用的所有文档。它也在工作,但它现在非常缓慢。
有没有办法让它更快。如果需要的话,我会分享代码。
谢谢
发布于 2016-10-06 05:35:44
尝试了一下这个:
db.table.find("text", {search:"\"small\" \"cell\" \"lung\""})
现在,上面的代码将执行以下操作:
如果搜索字符串包括短语,则搜索执行搜索字符串中的任何其他术语;例如,搜索“\”亲吻我的脸颊嘴唇“搜索”“吻我”和“吻我”。
你可以从这里读出来
发布于 2016-10-06 05:02:57
当您想要匹配完整短语时,请将短语括在转义双引号中:
db.table.find( { $text: { $search: "small cell lung" } } )还请参阅mongodb站点上的$text文档。
https://stackoverflow.com/questions/39887708
复制相似问题