1
cs3230524 48 天前
合适
|
![]() |
2
codehz 48 天前 ![]() (是否选用 sqlite3 的唯一考量因素是有没有横向扩展的需求,没有的话,即使全文搜索这种需求也可以在 sqlite3 里做。。
比如用 sqlite3 内建的 fts5(中文的话比较麻烦,但是也有能用的第三方分词,可以自己整进去) |
![]() |
3
GoLand 48 天前
做好 seo,然后直接用谷歌搜索,类似 v 站的搜索功能。
|
![]() |
4
340244120w 48 天前 via iPhone
Es 基于 lucene 的 所以可以考虑 lucene
|
5
beyondex 48 天前
合适。如果是 .NET 可以用 Lucene.NET 如果是 Java 可以用 lucene,但是用起来其实比直接用 ES 写代码要复杂一些。
|
![]() |
6
12101111 48 天前 ![]() |
7
newbieRenew 48 天前 via iPhone
由第三方全文搜索的工具,你搜一下
|
![]() |
8
zhuangzhuang1988 48 天前
合适
|
![]() |
9
xcstream 48 天前
不合适 内存占太大
|
10
crynocry 48 天前
尝试一下 MySQL 全文索引
|
11
shuangya 48 天前
不合适。小型直接 mysql 就够了。
mysql 512M 内存就可以跑起来。 es 没有 2G 就别跑了。 |
![]() |
12
idblife 48 天前 via iPhone
数据量小的话不合适
mysql 查呗,小数据量全表也没事 |
13
whitehack 48 天前
|
![]() |
14
niubee1 48 天前
数据量不大的话可以试试 Redisearch
|
15
leafre 48 天前 via Android
直接 lucene
|
![]() |
16
love 48 天前 via Android
杀鸡用牛刀了,之前有人推荐过一个很轻量的也比较流行的,忘了叫什么搜一搜可能搜到
|
![]() |
17
DoctorCat 48 天前
是否合适,重点是要看成本。
|
![]() |
18
anUglyDog 48 天前
MySQL 内置中文分词引擎 ngram
|
![]() |
19
CODEWEA 48 天前
不谈实际,空谈技术都是扯淡,你不得先确定需求吗?
|
![]() |
20
izgzhen 48 天前
AWS 上的 ES 成本还是比较弹性的,不知道其他☁️如何
|
![]() |
21
yzbythesea 48 天前
博客之前用的就是一个 javascript 写的搜索,原理就是 regex 指定的文本。
|
22
yrj 48 天前 via iPad ![]() 数据量小,建议直接 sqlite 自带的全文检索,我用过没问题的。单个人不是很推荐 sqlite 做生产数据库。
|
![]() |
23
veike 48 天前 via Android
@yzbythesea 太弱了
|
![]() |
24
zjsxwc 48 天前 via Android ![]() 偏个题
mysql5.7 之后就支持中文全文搜索了 ngram |
![]() |
25
Jackeriss 48 天前 via iPhone
github 上也有不少小型搜索引擎项目
|
27
update 48 天前 ![]() 中小型的尝试下
redissearch manticoresearch sphinx |
![]() |
28
xuanbg 48 天前 ![]() 楼主是不是对“重”有着什么误解?什么叫重?
1 、使用、管理、维护需要专门的人才,这个叫重 2 、使用的代价高昂,应用本身或应用工作所需的硬件资源需要花费巨额资金,这个叫重 3 、没有第三了…… ES 重吗?完全免费!一行 docker 命令就能完成安装,几乎不需要配置,spring boot 已经集成了客户端,这个能叫重? 至于使用它所需要的资源,cpu 取决于你的业务量,内存 /存储取决于你的内容。既然你没啥访问量,内容也不多,那基本上就是 docker 镜像占用个几百兆硬盘空间而已。你管这个叫重? |
![]() |
29
chinesestudio 48 天前 via Android
solr
|
![]() |
31
mywaiting 48 天前
要是用 PostgreSQL 增加全文搜索也就是分分钟的事情,tsvector 搞定所有搜索
当然了,这是中小型网站的选择,你要是打算到 Google 搜索这级别,就当我什么也没有说过吧 |
![]() |
33
pc10201 48 天前
阿里云直接有搜索服务,自动同步 mysql
|
![]() |
34
est 48 天前 via Android
> 楼主正在开发一个类似 emby 或 plex 的个人媒体服务器,数据量自然不会太大
建议直接 mysql ngram |
35
mtrec 48 天前 via Android
但还是要解决 "搜索元数据中的关键词" 这一问题
需求这么简单自己写个分词倒排索引不就好了? |
![]() |
36
notejava 48 天前
Elasticsearch 重了点,Lucene 就可以满足
|
![]() |
37
KevinBlandy 48 天前
也许可以试试看 redissearch
|
![]() |
38
imn1 48 天前 ![]() 我想问有什么元数据的关键词需要搜索?就是什么需求?
个人服务的话,建议还是免装数据库(暂时就 sqlite 合适),其他所有需要安装的数据库,都不适合备份导出 注意用户群中懂导入导出的恐怕不足 5%,媒体越多,库越大,意味着这个用户前期输入组织的工作量越大,基本不可能在崩溃后重新再组织一次,如果做不到原样回复,那就是一次抛弃型软件 经验: 我目前一万五千个视频文件,就已经 50T 硬盘了,找到视频的路径位置是第一需求 我的意思是,大视频的话,数量少一点,但存在分盘问题,小视频的话,数量多一点,但个人较难逐个输入数据,肯定有他自己的一套提醒记忆方案,这个方案一般不会太复杂(否则不好记),但比较个性化,其他人不适用 所以做这种个人服务项目,做成泛化功能用途不大,反而需要一些个人定制的功能,反正就是不好做 个人觉得,以数据量来说,sqlite 足够了,很难想像个人的媒体,在不计算图片前提下能达到百万级,如果真达到百万级(例如包含图片),元数据一定不会太复杂,因为对那个用户来说,百万级手动输入不太可能,自动获取又难以满足他的记忆提醒需求,时间、地点、TAG,超出这些的个性化需求就不是软件制作人能想到的了 不必太担心全文搜索了,这不是个人媒体库的难点 |
![]() |
40
lewis89 48 天前 ![]() 别考虑这么多,针对终端用户的东西,还动不动考虑性能... 真的是没有意思,个人用户撑死能存个几万部电影,这种场景 性能不是首先需要考虑的问题。
|
![]() |
41
areless 48 天前 via Android
sphinx 超强的
|
![]() |
42
yodhcn 48 天前
@imn1 #38 元数据直接通过爬虫爬取,包括:标题、封面图片 url 、标签、系列名、演员名、上映日期、作品介绍 (TEXT 类型) 等内容,再有就是扫描磁盘得到的影片存储路径。
其实我最开始想问是另一个问题,https://www.v2ex.com/t/743359#reply6 老哥你的意思是: 1. 虽然 sqlite 也有 fts5,但如果只从 "标题、标签、系列名、演员名、上映日期" 这些 VARCHAR 类型的字段搜索关键词,是不是就没必要用 "全文搜索" 来做,直接把它们拼接成一个新字段 search,再在这个字段里搜索 "WHERE search LIKE '关键词''" 就够了? 2. 虽然这么搜索没有索引,但由于数据量不大,所以不用考虑性能与效率问题? @imn1 #38 |
![]() |
43
codehz 48 天前
FTS5 可以索引多个列的,没有任何问题,还能做约束从不同列搜索内容。。实现类似谷歌的那种搜索语法(当然为了用户友好性你还是得自己转换一下)
|
![]() |
44
imn1 48 天前 ![]() @yodhcn #42
Y,性能不是大问题,最难的地方还是怎么提供一些个性化需求(说的不是皮肤) sqlite 有两个好用的东西,其他数据库应该也有,没详细考究 1. || 连接符,拼接多个字段 2. 自定义函数,注册为 sqlite 函数,这个就好多事情可做了 说几个我遇到的难点吧,至今还没自己满意的解决方案 1. 举个例子 输入:严正花、严正华、严晶华……任一,如何“智能”搜到 严正化(这个是数据库中正确的名字) 意思是,用户输入是随意的,但数据是归一的,如何能做到两者合理匹配 为了这个搞个 AI 不值得,模糊匹配准确度又低 自驾网经常见到这样的帖子:这个女的叫什么?有什么番号? —— 以图搜车 岛国有个素人大全数据库的网站,那叫一个全啊,曾经用什么名字出现在哪个产品都能搜出来 2. 你只考虑了公众化的内容,个人服务有个很大的需求是自己的内容,例如各种自拍、生活记忆、旅行影像等等,这些就需要很强的自定义数据字段 —— 批量输入、单独输入、个性化标签、归类、自动识别(人脸?)……等等 举个例子:电话录音的整理 3. 文件改名、移动,尤其是跨盘移动 如果在管理软件内操作,如何处理大量文件 IO,有可能几百 G 移动哦(westworld 4K 一季就这个量了),自己写的话,不但不好使,出 BUG 可能性也极高 如果不是在管理软件内操作(例如用三方复制软件操作),如何方便又准确地,在移动操作后重新匹配数据 还有其他复杂问题,只是我需求比较狭窄,没遇到 反正搜索性能是小事,但优化肯定还是要做的,不能事小而不为,重点放在个性化的数据录入,以及备份恢复吧 |
45
airfling 47 天前
hibernate search 其实也可以
|
46
ffxrqyzby 47 天前
你个人媒体, 我感觉直接 grep 就够了....
最多几百兆文本?内存一加载就行了, es 是有点太重了, 不过还是看你选择了, 玩玩 es , 了解一下也挺不错 |
47
encro 47 天前
|
![]() |
48
jiahonzheng 43 天前
|
49
dbpe 25 天前
@jiahonzheng 这个好像没有评分系统...一但花里胡哨起来..应付不过来啊
|