gpt4 book ai didi

mongodb - 广泛的过滤

转载 作者:搜寻专家 更新时间:2023-10-30 23:37:04 24 4
gpt4 key购买 nike

示例:

{
shortName: "KITT",
longName: "Knight Industries Two Thousand",
fromZeroToSixty: 2,
year: 1982,
manufacturer: "Pontiac",

/* 25 more fields */

}
  • 能够按至少 20 个字段进行查询,这意味着只有 10 个字段未编入索引
  • 有 3 个字段(均为数字)可用于排序(双向)

这让我想知 Prop 有大量可搜索字段的网站如何做到这一点:例如房地产或汽车销售网站,您可以在其中按每个小细节进行过滤,并可以在多个排序选项之间进行选择。

我如何使用 MongoDB 实现这一目标?我应该如何为这种集合建立索引?

我知道有专门用于搜索的数据库,但每个数据库都必须有一般的经验法则来执行此操作(即使性能较低)。我敢肯定不是每个人都使用 Elasticsearch 或类似的东西。

---

选读:

我的理由是索引可能很大,但索引顺序很重要。您将始终确保返回最少结果的字段在索引中排在第一位,而最通用的字段排在最后。但是,如果用户只选择通用字段怎么办?我是否应该包括非通用字段以进行查询?如何解决两种方式的排序?还是索引交集可以挽救局面,我应该只添加 20 个不同的索引?

最佳答案

text index 是你的 friend 。

在此处阅读:https://docs.mongodb.com/v3.2/core/index-text/

简而言之,这是一种告诉 mongodb 您想要对特定字段、多个字段或所有字段(耶!)进行全文搜索的方法

要允许对所有字段进行文本索引,请使用特殊符号 $**,并将其定义为“文本”类型:

db.collection.createIndex( { "$**": "text" } )

您还可以使用 Case InsensitivityDiacritic Insensitivity 等配置它。

要使用索引执行文本搜索,请使用 $text 查询助手,请参阅:https://docs.mongodb.com/v3.2/reference/operator/query/text/#op._S_text

更新:

为了允许用户选择特定字段进行搜索,可以在创建文本索引时使用权重:https://docs.mongodb.com/v3.2/core/index-text/#specify-weights如果您仔细选择字段的权重,例如仅使用不同的质数,然后添加 $meta您可以从“textScore”中找出与此查询匹配的字段,然后过滤掉未从所选搜索字段中获得命中的结果。

在这里阅读更多:https://docs.mongodb.com/v3.2/tutorial/control-results-of-text-search/

关于mongodb - 广泛的过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40791345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com