时间:2023-03-16 23:42:01 | 来源:电子商务
时间:2023-03-16 23:42:01 来源:电子商务
傻瓜一词借鉴自傻瓜相机,又称轻便相机、全自动相机,通常指容易操作针对一般人而设计的小型全自动相机。在 HelloGitHub 找到有趣、入门级的开源项目,大家好我是卤蛋。说到开源搜索引擎第一个想到的应该是鼎鼎大名的 ElasticSearch,但 ES 对于个人项目有些重。
https://github.com/meilisearch/MeiliSearch在介绍 MeiliSearch 的功能之前,我想先聊下我是怎么找到它并喜欢上它的。
curl -L https://install.meilisearch.com | sh./meilisearch
这个安装够不够傻瓜 启动成功如下图:http://127.0.0.1:7700/
就可以看到 MeiliSearch 提供的 Web 搜索页面。我提前写入了一些数据,用来演示搜索:# 要求 Python3.6+pip3/pip install meilisearch
用 Python 实现连接、写入、查询、删除等基本操作:import meilisearchclient = meilisearch.Client('http://127.0.0.1:7700', 'masterKey') # masterKey 是密码# index 相当于数据库的表index = client.index('books')# 准备写入搜索的数据documents = [ { 'book_id': 123, 'title': 'Pride and Prejudice' }, { 'book_id': 456, 'title': 'Le Petit Prince' }, { 'book_id': 1, 'title': 'Alice In Wonderland' }, { 'book_id': 1344, 'title': 'The Hobbit' }, { 'book_id': 4, 'title': 'Harry Potter and the Half-Blood Prince' }, { 'book_id': 42, 'title': 'The Hitchhiker/'s Guide to the Galaxy' }]# 删:清空指定 indexindex.delete_all_documents()# 写:result = index.add_documents(documents) # 该引擎会根据写入数据 ID 做替换或者新增的操作# 写入后并不代表搜索引擎处理完成,可以查看返回 updateId 的状态index.get_update_status(result.get('updateId'))# enqueued, processed or failed 三种状态(processed 代表完成)# 查:index.search('harry pottre')# 结果:# 包含丰富的字段"""{ // 命中的结果 "hits" => [{ "book_id" => 4, "title" => "Harry Potter and the Half-Blood Prince" }], // 页 "offset" => 0, // 每页条数 "limit" => 20, // 处理耗时 "processingTimeMs" => 1, // 查询的内容 "query" => "harry pottre"}"""
至此已经实现了搜索的最基本的功能,但探索不止于此。# 停用词client.index('movies').update_settings({ 'stopWords': [ 'the', 'a', 'an' ],})# 排序规则client.index('movies').update_ranking_rules([ "typo", "words", "proximity", "attribute", "wordsPosition", "exactness", "asc(publish_time)", "desc(watch)"])# 查看 stop wordsclient.index('movies').get_stop_words()# 重置设置# index.reset_settings()# 除了搜索其它操作都是异步,会直接返回一个 updateId 需要通过 ID 查询处理状态# wait_for_pending_update 可阻塞等待处理结果
这些设置可以有效的提高搜索效果,比如使用停用词之前,搜索“开源的书籍”命中不了“开源书籍”,加了停用词即可命中,因为匹配时忽略了输入内容包含的停用词(无用词)。cat << EOF > /etc/systemd/system/meilisearch.service[Unit]Description=MeiliSearchAfter=systemd-user-sessions.service[Service]Type=simpleExecStart=/usr/bin/meilisearch --http-addr 127.0.0.1:7700 --env production --master-key xxxxxx[Install]WantedBy=default.targetEOF# Set the service meilisearchsystemctl enable meilisearch# Start the meilisearch servicesystemctl start meilisearch# Verify that the service is actually runningsystemctl status meilisearch
但部署正式环境,需要注意以下几点:curl 地址
查看服务状态优秀的开源项目像散落在海边的贝壳,需要发现它的人。
HelloGitHub 就是拾贝者,找开源项目来 HelloGitHub 就对了!
关键词:实现,功能,索引,傻瓜