Search 使用关键字查询MongoDB

Search 使用关键字查询MongoDB,search,mongodb,Search,Mongodb,我在MongoDB中储存了大量推文。推文看起来像这样: "_id" : ObjectId("4c02c58de500fe1be1000005"), "contributors" : null, "text" : "Hello world", "user" : { "following" : null, "followers_count" : 5, "utc_offset" : null, "location" : "", "profile_text_col

我在MongoDB中储存了大量推文。推文看起来像这样:

"_id" : ObjectId("4c02c58de500fe1be1000005"),
"contributors" : null,
"text" : "Hello world",
"user" : {
    "following" : null,
    "followers_count" : 5,
    "utc_offset" : null,
    "location" : "",
    "profile_text_color" : "000000",
    "friends_count" : 11,
    "profile_link_color" : "0000ff",
    "verified" : false,
    "protected" : false,
    "url" : null,
    "contributors_enabled" : false,
    "created_at" : "Sun May 30 18:47:06 +0000 2010",
    "geo_enabled" : false,
    "profile_sidebar_border_color" : "87bc44",
    "statuses_count" : 13,
    "favourites_count" : 0,
    "description" : "",
    "notifications" : null,
    "profile_background_tile" : false,
    "lang" : "en",
    "id" : 149978111,
    "time_zone" : null,
    "profile_sidebar_fill_color" : "e0ff92"
},
"geo" : null,
"coordinates" : null,
"in_reply_to_user_id" : 149183152,
"place" : null,
"created_at" : "Sun May 30 20:07:35 +0000 2010",
"source" : "web",
"in_reply_to_status_id" : {
    "floatApprox" : 15061797850
},
"truncated" : false,
"favorited" : false,
"id" : {
    "floatApprox" : 15061838001

例如,如果我想查找关于某个主题(例如佳能)的推文,那么我应该如何编写一个查询来检查“文本”并查找关于“佳能”的所有推文

MongoDB没有直接的本机查询支持在文本中搜索。有官方文档向您展示了如何实现简单的全文搜索方法:

它涉及到将文本拆分为单词,并将它们存储在一个数组中,然后对其进行索引。这使您可以与数组的内容进行匹配。如何将他们分开是你的选择。也许你只需要做单词,小写,并匹配一个小写关键字。或者你可能需要自动补全,这样你就可以对每个单词进行变体,或是语音,等等。这些都是词干


它没有全文搜索引擎那么强大,但它可以工作。根据您使用的语言,某些框架具有搜索包。例如,我使用mongodb with,其中有一个For,它提供词干分析和不同的搜索工具。

谢谢,我不知道如何使它看起来像那样)您只需突出显示它并点击顶部工具栏中的“代码示例”按钮。它需要4个空格缩进才能成为“代码”-1用于在不做任何研究的情况下提问我正在使用Ruby,所以我可以用Ruby进行搜索吗?只是在MogoDB中,我必须将所有文本拆分为关键字,但我有一个很大的tweet集合,所以将它们拆分似乎不真实(((@DulosAdam:您必须搜索提供此功能的Ruby软件包。否则,您必须手动执行此操作。每次对文档/字段进行更改时,您都必须使用您决定的任何词干生成方法重新编制索引。请阅读我发布的链接,以了解您的操作方法。@DulosAdam:这可能看起来不真实,但您必须这样做o、 您可以决定要索引哪些字段。然后您可以将这些字段按您希望的方式拆分为一个私有字段。然后您可以确保对该字段进行索引。这就是您必须执行的操作。在django搜索包中,他们实际上创建了一个关系集合,以存储与原始文档分开的索引词。@Dulos Adam:没错。这是一个完整的text搜索引擎。因此,您必须协调将数据存储在其中,并链接回您的mongo数据库以获取文档。但我现在使用mongo进行此操作,而且速度非常快。@Dulos Adam:很乐意提供帮助。如果它解决了您的问题,请别忘了打绿色复选标记以获取答案。