使用“.”文本搜索值在搜索值中

2024-03-04

我收集了 200 万份文档,其中包含 20 个字段。有几个字段有 "-" 和 "。"然后是一个唯一的文件名字段。

Update

我已将“-”转换为“_”,问题仍然存在。看来“.”造成了大部分问题。我认为索引器在点上分开,因此文件名被索引,扩展名被索引,但不是整个文件名+扩展名。

更新结束

这是我拥有的文件样本。 (注意:如果您使用此示例进行测试,它将快速返回,但在 200 万个文档上,结果速度会发生变化)

{ 
    "FileName" : "NA2148-958-041114.PDF",
    "Customer" : "customer-958"
},
{ 
    "FileName" : "NA2149-958-041116.PDF",
    "Customer" : "customer-958"
},
{ 
    "FileName" : "NA2149-959-041118.PDF",
    "Customer" : "customer-959"
}

我在该集合上创建了以下全文搜索。

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

如果我对完整文件名进行完整搜索,则最多需要 65 秒才能返回单个文档。

db.test.find({$text: {$search: "\"NA2148-958-041114.PDF\""}})

如果我做一个解释()

db.test.find({$text: {$search: "\"NA2148-958-041114.PDF\""}}).explain()

"parsedTextQuery" : {
                "terms" : [ 
                    "041114", 
                    "958", 
                    "na2148", 
                    "pdf"
                ],
                "negatedTerms" : [],
                "phrases" : [ 
                    "NA2148-958-041114.PDF"
                ],
                "negatedPhrases" : []
            }

我期望解释中的术语与短语相同,并使用该值搜索索引。


如果我执行以下搜索,它会在大约 15 秒内返回文档。

db.test.find({$text: {$search: "NA2148-958-041114.PDF"}}).explain() *** (不带 ") **)

{
    "terms" : [ 
        "041114", 
        "958", 
        "na2148", 
        "pdf"
    ],
    "negatedTerms" : [],
    "phrases" : [],
    "negatedPhrases" : []
}


如果我执行以下搜索,它将在 1 秒内返回文档。

db.test.find({$text: {$search: "041114"}})

{
    "terms" : [ 
        "041114"
    ],
    "negatedTerms" : [],
    "phrases" : [],
    "negatedPhrases" : []
}

我怀疑索引步骤正在分割值,因此整个文件名没有索引,只有块。
有没有办法让搜索仅使用该短语,并且在被“”包围时不对它进行标记,或者让索引步骤不对“-”或“.”进行标记。在文件名中?

注意:我已经读到,使用 $default_language: "none" 进行索引将使用简单的 tokenizer,但这并没有改变结果。

关于这个主题的任何帮助或指导都会很棒。


这是在“-”前面添加“\”时的结果,在explain()或速度上没有什么不同。

db.text.find({$text: {$search: "\"NA2148\-958\-041114\.PDF\""}}).explain()

{
    "terms" : [ 
        "041114", 
        "958", 
        "na2148", 
        "pdf"
    ],
    "negatedTerms" : [],
    "phrases" : [ 
        "NA2148-958-041114.PDF"
    ],
    "negatedPhrases" : []
}

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用“.”文本搜索值在搜索值中 的相关文章

  • 按 sum mongodb 分组[重复]

    这个问题在这里已经有答案了 这是我以前的 MySQL 查询 SELECT Count status as amt status FROM users GROUP BY status 这会返回类似的东西 amt status 3 0 210
  • 将 MongoDb 同步到 ElasticSearch

    我正在寻找一种将 MongoDB 中的集合与 Elastic Search ES 同步的方法 目标是以 MongoDB 作为主要数据源 并使用 MongoDB 作为全文搜索引擎 我的项目的业务逻辑是用python写的 网上有多种方法可供选择
  • 如何使用 mongo-cxx-driver 设置 Visual Studio 项目设置?

    我已经在 Windows 10 上成功构建了用于 C 的 MongoDB 驱动程序版本 3 0 3 CMAKE INSTALL PREFIX C mongo cxx driver 但我不知道如何在 Visual Studio 2015 中设
  • mongodb - 一个集合中的许多文档与多个集合中的许多文档

    我使用 mongodb 作为数据库存储 我的网络应用程序必须收集用户响应 用户响应是 mongodb 中的文档 或 sql 中的一行 一个文档的长度大约是10 200 用户响应被分类 仅到一个类别 每个类别的用户响应数在100 5000之间
  • 查找聚合中的管道在 mongodb 中不起作用

    我是 mongodb 的新手 所以我希望这不会成为一个非常基本的问题 我做了一些研究 并试图应用我所发现的东西 但有些东西似乎让我忽略了 我有两个以下格式的集合 Shop shopId 1002 shopPosId 10002 descri
  • MongoDB:如何使用单个命令更新多个文档?

    我惊讶地发现以下示例代码仅更新单个文档 gt db test save id 1 foo bar gt db test save id 2 foo bar gt db test update foo bar set test success
  • Mongodb upsert 嵌入文档

    我每天每米有一份文件 如果它不存在 如何在数据数组中添加另一个子文档并创建整个文档 key 20120418 123456789 data Meter 123456789 Dt ISODate 2011 12 29T16 00 00 0Z
  • Mongoose 查询:删除“_id”属性,在结果中保留虚拟属性“id”

    我正在运行 Express js 应用程序 并且有以下设置 模型 js var schemaOptions toJSON virtuals true toObject virtuals true var modelSchema new mo
  • MongoDB $geoIntersects 不适用于包含负顶点的多边形

    我已在数据库中存储了跨越 x 轴和 y 轴的多边形 并且我想搜索包含给定点的多边形 为此 我使用 geoIntersects 运算符来指定一个点 但是 当多边形穿过轴时 MongoDB 不会返回任何多边形 我可以对查询或架构进行任何小的更改
  • Mongodb 通过查询和分组查找

    简单收集 id 123 name FooBar zone Bas id 456 name Alice zone Bas id 789 name FooBar zone Bas 首先 我构建一个查询来按名称查找所有元素 db collecti
  • Mongodb 聚合嵌套组以及最近更新的文档

    我已经在我的集合中指定了人员 状态 如下所示 ASSIGN ID 583f84bce58725f76b322398 SPEC ID 58411771 STATUS 1 UPDATE DATE ISODate 2016 12 21T04 10
  • Java MongoDB 获取子文档的值

    我试图从子文档中获取键的值 但我似乎无法弄清楚如何使用 BasicDBObject get 函数 因为键嵌入了两层深度 这是文档的结构 File name file 1 report name report 1 group RnD 基本上一
  • Mongodb 数据库上的 SASL 身份验证失败

    我在尝试使用 PHP Mongodb 驱动程序连接到 Mongodb 时遇到问题 实际上我有一个名为 LRS 的数据库 它有一个名为 juano 的用户 在我的设置文件中带有密码 12345 我确信我编写了正确的配置 但是当我在 Larav
  • Mongodb - 为现有集合添加架构

    我的 MongoDB 中有一个包含 1300 万条记录的集合 不幸的是 当我创建这个集合时 没有为其创建模式 我想知道除了备份整个数据库 创建架构并上传所有数据之外 是否有任何方法可以添加 JSON 架构 您可以使用以下方法将 JSON 架
  • mongodb 聚合 - 累积字段的不同组值

    如果我有Player表格文件 name String score Int 我有Group文档 其中组代表玩家列表 groupName String players ObjectID 玩家可以属于多个组 我想做一个聚合Player文档 按以下
  • 如何处理 MongoDB 的断开连接错误

    我在 Node js 进程中看到了这个未捕获的异常 Uncaught exception Error read ETIMEDOUT at TCP onStreamRead internal stream base commons js 16
  • 将域类从 GORM 独立模块导入到 Grails 中

    我有两块拼图 1 一个名为的无 Grails 项目core module使用独立的 GORM dependencies compile org grails grails datastore gorm mongodb 6 0 4 RELEA
  • 是否可以提高 Mongoexport 速度?

    我有一个 1 3 亿行的 MongoDB 3 6 2 0 集合 它有几个简单的字段和 2 个带有嵌套 JSON 文档的字段 数据以压缩格式 zlib 存储 我需要尽快将其中一个嵌入字段导出为 JSON 格式 然而 mongoexport 需
  • Mongodb MapReduce 选择最新日期

    我似乎无法让我的 MapReduce 缩减功能正常工作 这是我的地图功能 function Map day Date UTC this TimeStamp getFullYear this TimeStamp getMonth this T
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la

随机推荐