Java 系统内做全局搜索功能需要使用什么技术 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jiobanma
V2EX    Java

Java 系统内做全局搜索功能需要使用什么技术

  •  
  •   jiobanma
    banmajio 2023-01-30 09:38:42 +08:00 3919 次点击
    这是一个创建于 989 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,大概类似手机的全局搜索,一个输入框,输入关键词会关联出很多待匹配项。需求是在系统内( pc )头部增加一个输入框,可以搜索到系统内的很多数据。不知道有没有描述清楚。像这种功能只有 ES 可以实现吗?

    20 条回复    2023-01-31 09:07:18 +08:00
    ql562482472
        1
    ql562482472  
       2023-01-30 09:40:18 +08:00
    其实你还可以使用其他支持全文搜索的工具:升级你的 mysql 、用 pg 之类的
    同时这种搜索必然有搜索内容、时效上有权衡和优化,作为应用开发者 这不是你跟产品需要考虑的东西么
    JarlZhang
        2
    JarlZhang  
       2023-01-30 09:45:15 +08:00
    需求简单的话 solr 就可以支持
    Wien
        3
    Wien  
       2023-01-30 09:47:36 +08:00
    复杂搜索还是建议无脑上 es
    zhuangzhuang1988
        4
    zhuangzhuang1988  
       2023-01-30 09:47:51 +08:00
    lucene 啊, 直接几个 Jar 就好了
    zhanggg
        5
    zhanggg  
       2023-01-30 09:48:20 +08:00
    看体量和命中率
    量少把相关数据写 sqllite like 都能做
    kingofzihua
        6
    kingofzihua  
       2023-01-30 09:49:55 +08:00
    如果你数据量不大,可以找个第三方对接,比如[algolia]( https://www.algolia.com/)
    xiangxiangxiang
        7
    xiangxiangxiang  
       2023-01-30 10:13:17 +08:00
    应该也可以自研吧,没搞过

    google 一下 设计一个搜索自动补全系统 ?
    realrojeralone
        8
    realrojeralone  
       2023-01-30 10:21:47 +08:00
    手机上的全局搜索是本地和服务端混合搜索,本地只搜索本机内容,远程是一套完整的搜索引擎,只做过远程的搜索,没做过本地的,应该也是一套索引之类的东西,只不过量比较小
    zhuangzhuang1988
        9
    zhuangzhuang1988  
       2023-01-30 10:22:36 +08:00
    或者看下这个<JetBrainsTV>的 live code
    用 kotlin 做一个搜索。
    jiobanma
        10
    jiobanma  
    OP
       2023-01-30 10:23:24 +08:00
    linvaux
        11
    linvaux  
       2023-01-30 10:39:56 +08:00
    上 ES 吧,一劳永逸,lucene 有点太底层了,而且索引也不方便管理
    cco
        12
    cco  
       2023-01-30 11:13:32 +08:00
    虽然 solr 也可以,但 ES 相对于 solr 更好用一点。
    jiobanma
        13
    jiobanma  
    OP
       2023-01-30 11:13:58 +08:00
    @linvaux
    @cco 谢谢啦 我研究一下
    wxw752
        14
    wxw752  
       2023-01-30 11:19:56 +08:00
    ES 方便
    honamx
        15
    honamx  
       2023-01-30 11:34:47 +08:00
    数据量不大就数据库 like 一把梭,不过迟早要改,早上 ES 早幸福
    ediron
        16
    ediron  
       2023-01-30 11:49:45 +08:00
    可以用 ES 的即时搜索
    ```
    POST index_name/_search
    {
    "query": {
    "match_phrase_prefix": {
    "name": "J"
    }
    }
    }
    ```
    matrix1010
        17
    matrix1010  
       2023-01-30 12:08:15 +08:00
    不复杂的情况下 pg 的 pg_trgm, mysql 的 ngram parser 都能处理。在语言层面实现 ngram 分词然后存到数据库里也没问题。复杂情况, 比如有很复杂的排序规则可能就只能 ES 了
    limbo0
        18
    limbo0  
       2023-01-30 12:15:31 +08:00
    看标题没看懂,是单机搜索还是 web 端服务?
    buliugu
        19
    buliugu  
       2023-01-30 20:35:41 +08:00
    老实上 ES ,去年做了类似的全局搜索,最后需求各种变化,es 都能去实现。。。换一个别的,功能支持未必有它全
    jiobanma
        20
    jiobanma  
    OP
       2023-01-31 09:07:18 +08:00
    @wxw752
    @honamx
    @ediron
    @matrix1010
    @limbo0 web 端的服务
    @buliugu
    感谢大家!
    关于     帮助文档     自助推广系统     博客     API     FAQ   &nbs; Solana     5835 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 02:58 PVG 10:58 LAX 19:58 JFK 22:58
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86