lasqbt 2023-04-24 13:53 采纳率: 0%
浏览 58
已结题

悬赏:java mongodb 全文检索中文问题

项目中用了mongodb进行存储python爬取的相关数据。爬取的内容95%的都是中文的。现在有业务需要根据关键字从mongodb中进行全文检索。在开发过程中,发现中文检索在某些情况下检索不出来,特来论坛求猿神赐教。下面贴相关代码和图片:
mogodb相关业务某个集合里面的数据:

img

java查询代码如下:

img

集合中有5条包含“沙悟净”的数据,但是只查出来了前三条,后面两条查不出来,我翻过相关资料,都说全文检索对英文的支持是最好的,对中文支持不太好,英文的每个单词之间都是有空格或者标点符号的,而中文大部分汉字与汉字之间都是紧挨的,个别是有标点符号的。
如果我把最后两条的备注字段分别修改为:菩萨 沙悟净;佛祖 沙悟净 啊(或者是:佛祖,沙悟净。啊) 只要是关键词前后有分隔符。那么全文检索就能查询出来,如果没有分隔符则查不出来。 现在特来论坛求猿神赐教该怎么修改代码,能把后面2条查出来。

有猿神能赐教解决一下不,完美解决了 红包Ing!~

  • 写回答

4条回答 默认 最新

  • ShangHai_GY 2023-04-24 14:31
    关注

    引用ChatGPT部分回答:
    对于使用 MongoDB 进行中文全文检索的问题,通常需要考虑以下几个方面:

    1. 分词器:中文的一大特点就是没有空格,因此在进行全文检索时需要进行中文分词。可以使用标准分词器或中文分词器,如 ik-analyzer、hanlp 等,在存储数据时进行分词处理,以便后续进行检索。

    2. 索引:在 MongoDB 中,可以使用文本索引来进行全文检索,需要在存储数据的集合中创建文本索引,并指定分词器,以便在检索时使用相同的分词器。

    3. 检索:在进行检索时,可以使用 MongoDB 提供的文本检索操作符 $text 或 $search 进行检索,并指定分词器。例如,使用 $text 进行检索时,可以指定分词器并使用以下语法:db.collection.find({ $text: { $search: "关键字", $language: "中文分词器名" } })

    4. 其他注意事项:

      • 分词器选择:不同分词器的效果有所不同,需要根据实际情况进行选择。
      • 检索性能:全文检索对性能要求较高,尤其在数据量较大的情况下,需要进行性能测试和优化。
      • 特殊字符:中文中的标点符号和其他特殊字符可能会影响分词和检索的效果,需要进行处理。

    综上所述,使用 MongoDB 进行中文全文检索需要进行分词器的选择、索引的创建以及检索语句的制定等操作,同时还需要注意检索性能和特殊字符等问题。

    评论

报告相同问题?

问题事件

  • 系统已结题 5月2日
  • 赞助了问题酬金15元 4月24日
  • 创建了问题 4月24日

悬赏问题

  • ¥20 服务器redhat5.8网络问题
  • ¥15 如何利用c++ MFC绘制复杂网络多层图
  • ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变
  • ¥15 python螺旋图像
  • ¥15 算能的sail库的运用
  • ¥15 'Content-Type': 'application/x-www-form-urlencoded' 请教 这种post请求参数,该如何填写??重点是下面那个冒号啊
  • ¥15 找代写python里的jango设计在线书店
  • ¥15 请教如何关于Msg文件解析
  • ¥200 sqlite3数据库设置用户名和密码
  • ¥15 AutoDL无法使用docker install吗?