【问题标题】:Mongo DB Full Text SearchMongoDB全文搜索
【发布时间】:2014-05-13 11:04:56
【问题描述】:

我正在运行一个 MongoDB (2.6.1) 实例并拥有数百万个文档,例如

t.save( { _id: 1, title: "Physics World", caption: "Physics World is the membership magazine of the Institute of Physics."} );
t.save( { _id: 2, title: "A break away!", caption: "'A break away!' is an 1891 painting by Australian main writer Tom Roberts."} );
t.save( { _id: 3, title: "Mahim Bora", caption: "Mahim Bora (b.1926) is an Indian main writer and educationist from Assam state."});

我还创建了一个索引,例如:

t.ensureIndex( { caption: "text" } );

然后我像这样搜索“主要作者”这个短语:

t.runCommand( "text", { search : "\"main writer\"", limit: 2000 } );

我遇到的问题是 Mongo 似乎只返回一条记录而不是两条。如果我将数据加载到 SOLR 中并将其编入索引以进行全文搜索,它将按预期工作。

这里有什么我可能会遗漏的吗?

【问题讨论】:

    标签: mongodb solr full-text-search


    【解决方案1】:

    请记住,您正在运行的文本命令在 2.6 版中已弃用:

    文字

    2.6 版后已弃用:改用 $text 查询运算符。

    您应该改用 $text:

    db.t.find({$text:{ $search : "\"main writer\""}}).limit(2000)
    

    不知道这是否会对您的具体情况产生影响,但使用已弃用的命令会使调试变得困难,并且将来肯定不会支持。当我对此进行测试时,两个版本都可以正常工作,但我只加载了 3 个文档,而不是您拥有的数百万个文档。

    【讨论】:

    • 刚刚从 mongo shell 中尝试过 - 结果相同。 :(
    • 我会为您提供示例数据并查询并针对只有 3 个文档的集合运行它。如果它正常工作,则表明您的索引存在错误或问题(我建议您在任何情况下尝试删除并重新创建)。
    猜你喜欢
    • 2018-10-26
    • 2023-03-28
    • 1970-01-01
    • 2018-11-23
    • 2017-03-31
    • 2014-05-10
    • 2014-11-24
    • 1970-01-01
    相关资源
    最近更新 更多