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

2023-01-30 09:38:42 +08:00
 jiobanma

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

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

google 一下 设计一个搜索自动补全系统 ?
realrojeralone
2023-01-30 10:21:47 +08:00
手机上的全局搜索是本地和服务端混合搜索,本地只搜索本机内容,远程是一套完整的搜索引擎,只做过远程的搜索,没做过本地的,应该也是一套索引之类的东西,只不过量比较小
zhuangzhuang1988
2023-01-30 10:22:36 +08:00
或者看下这个<JetBrainsTV>的 live code
<amp-youtube data-videoid="AhA-Q7MOre0" layout="responsive" width="480" height="270"></amp-youtube>用 kotlin 做一个搜索。
jiobanma
2023-01-30 10:23:24 +08:00
linvaux
2023-01-30 10:39:56 +08:00
上 ES 吧,一劳永逸,lucene 有点太底层了,而且索引也不方便管理
cco
2023-01-30 11:13:32 +08:00
虽然 solr 也可以,但 ES 相对于 solr 更好用一点。
jiobanma
2023-01-30 11:13:58 +08:00
@linvaux
@cco 谢谢啦 我研究一下
wxw752
2023-01-30 11:19:56 +08:00
ES 方便
honamx
2023-01-30 11:34:47 +08:00
数据量不大就数据库 like 一把梭,不过迟早要改,早上 ES 早幸福
ediron
2023-01-30 11:49:45 +08:00
可以用 ES 的即时搜索
```
POST index_name/_search
{
"query": {
"match_phrase_prefix": {
"name": "J"
}
}
}
```
matrix1010
2023-01-30 12:08:15 +08:00
不复杂的情况下 pg 的 pg_trgm, mysql 的 ngram parser 都能处理。在语言层面实现 ngram 分词然后存到数据库里也没问题。复杂情况, 比如有很复杂的排序规则可能就只能 ES 了
limbo0
2023-01-30 12:15:31 +08:00
看标题没看懂,是单机搜索还是 web 端服务?
buliugu
2023-01-30 20:35:41 +08:00
老实上 ES ,去年做了类似的全局搜索,最后需求各种变化,es 都能去实现。。。换一个别的,功能支持未必有它全
jiobanma
2023-01-31 09:07:18 +08:00
@wxw752
@honamx
@ediron
@matrix1010
@limbo0 web 端的服务
@buliugu
感谢大家!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/911509

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX