samohyes
V2EX  ›  问与答

几万条数据中找所有带某个字符串的记录怎么找比较快?

  •  1
     
  •   samohyes · Apr 9, 2021 · 2144 views
    This topic created in 2034 days ago, the information mentioned may be changed or developed.

    lz 这方面是个小白,现在一个项目有 1 万条数据,举个例子,地址:浙江省杭州市拱墅区天翼路等。我想把所有地址含有拱墅区这三个字的记录筛选出来。我原来是很傻地用一个 list 装,一个个找。现在想着,数据量大了,用数据库存然后找会不会更快?我试了下,用 list 一个个找约有 6ms,但是对数据库不大熟,有经验地老哥指点下怎么存怎么找快一点?

    14 replies  •  2021-04-09 23:37:28 +08:00
    ch2
    ch2
    Apr 9, 2021
    1
    elasticsearch 了解一下
    codehz
    codehz
    Apr 9, 2021 via Android
    2
    (如果只是匹配字符串的话,可以先分词,然后做词向量的方法处理。。。
    但是考虑到这里似乎和地理位置相关,这个方法可能不太够用
    samohyes
    samohyes
    OP
    Apr 9, 2021
    3
    @ch2 好嘞,我去了解下
    a5X77vajGRyLA2aF
    a5X77vajGRyLA2aF
    Apr 9, 2021
    4
    kmp 算法,ac 自动机; 根据自己需求,选择 NFA 算法或 DFA 算法
    xarthur
    xarthur
    Apr 9, 2021 via iPhone
    5
    这个数量才多少点……算你一条 15 个字,用 UTF-8 编码,汉字三个字节。一万条数据才 439.45KB……
    samohyes
    samohyes
    OP
    Apr 9, 2021
    6
    @xarthur 我这情况比较特殊,6ms 对我来说已经占了我所用的一次整个流程的一半了。。。我得把这个时间再缩短下。。
    HeavyWhale
    HeavyWhale
    Apr 9, 2021
    7
    boyer-morre
    xarthur
    xarthur
    Apr 9, 2021
    8
    @samohyes 6ms 占了流程的一半……你整个流程才 12ms 啊。如果只是偶尔调用也不慢啊。
    coreki
    coreki
    Apr 9, 2021 via Android
    9
    DFA 算法
    aec4d
    aec4d
    Apr 9, 2021 via iPhone
    10
    最容易,最好理解的方法是 n-gram,空间换时间,比如 abc 分成 abc,ab,bc,a,b,c 放到字典里面,查询效率是 O(1)
    IsaacYoung
    IsaacYoung
    Apr 9, 2021
    11
    巧了 前几天正好看到 kmp 算法
    dawangyezi
    dawangyezi
    Apr 9, 2021
    12
    先分词,建立倒排索引,然后再找就快了。和检索引擎一个原理。也可以直接用数据库的全文检索插件做
    Ballmer
    Ballmer
    Apr 9, 2021
    13
    最简单的 fulltext index 全文索引这种效果咋样
    billlee
    billlee
    Apr 9, 2021
    14
    1 万条数据,如果在意的是延迟,用数据库显然是不行的,一个网络 RTT 都要几毫秒了。
    这种这是多个字符串搜索单个词,没有什么太好的优化方法了。要优化应该要从内存访问方面着手了,比如把链表改成连续内存。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5300 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 02:08 · PVG 10:08 · LAX 18:08 · JFK 21:08
    ♥ Do have faith in what you're doing.