有什么好用的轻量级搜索服务?

72 天前
 webeasymail
目前我在做一个 [ SaaS 软件分销平台] ,里面大概会有不超过 1W 条数据吧,假设一年后有 10W 条数据,现在我需要找一个非常轻量级别的搜索组件。

这是一个单机版的系统,未来访问量也不会很大,我希望够对搜索效果进行提升,请问有什么好的技术可以使用?


我不太想使用 es ,主要是 es 很重,我们的数据量很少,而且没有分布式需求,未来数据量稍微多一些,我准备单独拆出来一台机器做 search 服务即可。


目前使用的是 mysql 的 like ,没有权重等等,所以效果还是很差的。

前端使用的是 next.js 后端现在使用的是 java 。



访问这个地址可以预览这个功能:

https://www.cpcat.cn/s/wework
5626 次点击
所在节点    Java
48 条回复
webeasymail
72 天前
@willx12123 like 高亮,分词什么的都需要处理,复杂度也高,做出来效果应该也不太好
dayeye2006199
72 天前
新点版本的 mysql 自带 full text search 支持。分词索引什么的都支持
Actrace
72 天前
可以试试 sphinx
shuimugan
72 天前
meilisearch ,丢了一千多万数据(40 个字段,其中 2 个大文本)进去,1c1g 跑得很舒畅,闲置时候只有二十多 MB 内存占用
fuis
72 天前
meilisearch 主要的问题是升级,每次升级都需要重新导入导出。。
sampeng
72 天前
@webeasymail 产品没想清楚.这是伪需求。
webeasymail
72 天前
@shuimugan 这性能也太强了吧,比 es 的内存占用少太多了
webeasymail
72 天前
@fuis 目前没有什么升级需求,大不了重建数据。
yufeng0681
72 天前
@webeasymail #19 把数据库里的所有 title 和 Company 的数据 变成索引,搜索时候就能联想出来。能联想到的就优先查(详细描述不用 like ,因为肯定命中了。 其他条目的详情里面如果有同样的 key ,也不建议显示出来,这个其实是相关竞品数据)
如果没有联想到,那就 三个字段都 like ,慢一点就慢一点,说明用户本身也没记住名字,大概率是记错了产品名字。

新场景:用户关注某个领域的产品,希望按类索骥走马观花,所以:层级分类确实要做好
mark2025
72 天前
kran
72 天前
JAVA 里竟然没人说 lucene
webeasymail
72 天前
@yufeng0681 感谢指点,是应该在搜索里面加入分类筛选,通过搜索工具是希望更够更好提升体验。
wxf666
72 天前
最轻量简单的,应该是 1MB 的 SQLite 了吧。。

案例就是手机端上的微信,全文搜索了吧。。


[《微信全文搜索耗时降 94%?我们用了这种方案》]( https://cloud.tencent.com/developer/article/2220615 ) 里说:

> 一个包含 100w 条中文内容、每条长度 100 汉字的 FTS5 的表查询三个词,optimize 状态下耗时 2.9ms

> 100w 条内容每次写入 100 条的情况下,按照 WCDB 的方案执行 merge ,耗时在 10s 内。
webeasymail
72 天前
@kran lucene 好像维护起来很麻烦,太久没用了,我记得以前手动维护好像挺麻烦的
webeasymail
72 天前
@wxf666 这个有技术挑战,需要投入太多精力。
webeasymail
72 天前
@2bad4u 这个更高级,我还真没有考虑过
wxf666
72 天前
@webeasymail 下载个开源 simple 中文分词插件,再写几行 SQL ,也会投入很多精力吗?
FrankAdler
72 天前
@shuimugan 1000w 占用内存多少呢,我测试 2000 条就 340M 了,万级别有点担忧啊
shuimugan
72 天前
@FrankAdler 搜索得频繁的时候好像是五百多 MB 。创建索引的时候占用是高的,看你给的上限,有个参数 MEILI_MAX_INDEXING_MEMORY 可以设置。冷数据给高点配置,等索引创建完之后就可以降配了。
webeasymail
72 天前
@wxf666 我看这个文章写了一大堆,做了好多特殊优化,看起来不是很容易使用的样子

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

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

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

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

© 2021 V2EX