MeiliSearch 是近两年开源的一个项目,主要目标是在小数据规模下实现比 ES 更加快速和易用的搜索体验。
主页
文档
上周发现 MeiliSearch 已经支持中文分词,于是进行了深入的调研。
(旁白,回头找老外问问,他们咋给项目起了一个中文名叫Meili
?)
MeiliSearch 支持的功能如下
我们目前在用 OpenSearch,同时也在尝试跟 kalasearch 进行沟通。卡拉搜索是一个新的搜索服务创业公司,可能是因为公司规模小人手不够,他们目前只对明确付费的客户服务。
对于搜索引擎来讲,以下几个功能尤其重要
ES 做为老牌搜索引擎,功能基本满足,但复杂,重量级,适合大数据量。 Meili 设计目标针对数据在 500GB 左右的搜索需求,极快,单文件,超轻量。
MeiliSearch is a RESTful search API. It aims to be a ready-to-go solution for everyone who wants a fast and relevant search experience for their end-users
Meili 真的做了一个命令就可以完成安装和使用,安装方便,搜索速度飞快。
详细功能可以参考
Meili 的中文分词功能,刚刚完成开发,并未合并到主分支,所以需要自行编译。 目前支持中文分词的分支是 0.18.0
+## v0.18.0
+
+ - Integration with the new tokenizer (#1091)
+ - Fix setting consistency bug (#1128)
+ - Fix attributes to retrieve bug (#1131)
+ - Increase default payload size (#1147)
+ - Improvements to code quality (#1167, #1165, #1126, #1161)
+
编译方法
git clone https://github.com/meilisearch/MeiliSearch.git
cd MeiliSearch
rustup override set stable
如果你还没有安装 Rust,可以自行查找资料,安装 Rust
和包管理器 cargo
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
依赖安装过程比较缓慢,不过好在我有 ClassX Pro
,编译过程感觉比 Golang 要慢,不知道是不是我的错觉。
启动命令非常简单
./meilisearch
Meili 不使用配置文件进行配置,而是使用参数或者环境变量进行控制
https://docs.meilisearch.com/guides/advanced_guides/configuration.html#options
接下来,进行索引和搜索测试
curl -d '{
"uid": "movies",
"primaryKey": "id"
}' \
http://127.0.0.1:7700/indexes
curl -X POST 'http://127.0.0.1:7700/indexes/movies/documents'\
--data @movies.json
做完这一步就可以打开 WebUI http://127.0.0.1:7700
进行搜索测试了
curl -d '{
"扫黑": [
"除黑",
"打黑"
],
"除黑": [
"扫黑",
"打黑"
],
"打黑": [
"除黑",
"扫黑"
],
}' \
http://127.0.0.1:7700/indexes/wechat/settings/synonyms
同义词是单向的,所以这里需要配置多次列表。那么问题来了,如果我有几十万同义词,应该怎么配置呢。 同义词的词林,一般建议使用哈工大的词库,下回我们细讲。
curl -d '{
"q": "扫黄"
}' \
http://127.0.0.1:7700/indexes/movies/search
今天上午摸鱼结束,下回接着讲词库管理。
首发地址