国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營銷資訊 > 電子商務(wù) > 相見恨晚!開源的傻瓜搜索引擎,幫你快速實現(xiàn)搜索功能

相見恨晚!開源的傻瓜搜索引擎,幫你快速實現(xiàn)搜索功能

時間:2023-03-16 23:42:01 | 來源:電子商務(wù)

時間:2023-03-16 23:42:01 來源:電子商務(wù)

傻瓜一詞借鑒自傻瓜相機(jī),又稱輕便相機(jī)、全自動相機(jī),通常指容易操作針對一般人而設(shè)計的小型全自動相機(jī)。
在 HelloGitHub 找到有趣、入門級的開源項目,大家好我是鹵蛋。說到開源搜索引擎第一個想到的應(yīng)該是鼎鼎大名的 ElasticSearch,但 ES 對于個人項目有些重。

今天給大家?guī)硪豢钶p盈、人人都會用的開源傻瓜搜索引擎——MeiliSearch

https://github.com/meilisearch/MeiliSearch
在介紹 MeiliSearch 的功能之前,我想先聊下我是怎么找到它并喜歡上它的。

我的要求并不高

我開發(fā)的 HelloGitHub 小程序:支持關(guān)鍵字搜索往期月刊中的開源項目。

小程序的搜索功能是用 Rust 寫的開源搜索引擎 Sonic,它雖然搜索速度快但使用過程中發(fā)現(xiàn):

這些問題直接影響了搜索的體驗,讓我十分苦惱一邊看搜索相關(guān)的知識,另外也在尋找新的開源解決方案。想找一個:

部署+配置簡單、支持中文分詞、搜索速度快、輕量級開源搜索引擎項目。

俗稱:傻瓜中文搜索引擎。

它有個美麗的名字

它有個“美麗”(meili)的名字「MeiliSearch」,同樣是用 Rust 寫的開源搜索引擎,支持:

概述功能:搜索速度快、全文搜索、支持漢字、容易安裝和維護(hù),這不就是我在找的:傻瓜中文搜索引擎嗎?

我已經(jīng)摩拳擦掌的躍躍欲試了,話不多說搞起!

簡單的開始

紙上得來終覺淺,得上手試試效果。

1、安裝和啟動

Linux & Mac OS 的一鍵安裝和啟動的命令:

curl -L https://install.meilisearch.com | sh./meilisearch這個安裝夠不夠傻瓜 啟動成功如下圖:

用瀏覽器訪問:http://127.0.0.1:7700/ 就可以看到 MeiliSearch 提供的 Web 搜索頁面。我提前寫入了一些數(shù)據(jù),用來演示搜索:

2、基本操作

MeiliSearch 就是一個搜索的服務(wù),提供 RESTful API 通訊協(xié)議更加通用,官方提供了多種編程語言的客戶端:

后面的演示將采用 Python 代碼作為示例,安裝 Python SDK:

# 要求 Python3.6+pip3/pip install meilisearch用 Python 實現(xiàn)連接、寫入、查詢、刪除等基本操作:

import meilisearchclient = meilisearch.Client('http://127.0.0.1:7700', 'masterKey') # masterKey 是密碼# index 相當(dāng)于數(shù)據(jù)庫的表index = client.index('books')# 準(zhǔn)備寫入搜索的數(shù)據(jù)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) # 該引擎會根據(jù)寫入數(shù)據(jù) ID 做替換或者新增的操作# 寫入后并不代表搜索引擎處理完成,可以查看返回 updateId 的狀態(tài)index.get_update_status(result.get('updateId'))# enqueued, processed or failed 三種狀態(tài)(processed 代表完成)# 查:index.search('harry pottre')# 結(jié)果:# 包含豐富的字段"""{ // 命中的結(jié)果 "hits" => [{ "book_id" => 4, "title" => "Harry Potter and the Half-Blood Prince" }], // 頁 "offset" => 0, // 每頁條數(shù) "limit" => 20, // 處理耗時 "processingTimeMs" => 1, // 查詢的內(nèi)容 "query" => "harry pottre"}"""至此已經(jīng)實現(xiàn)了搜索的最基本的功能,但探索不止于此。

3、優(yōu)化搜索效果

MeiliSearch 可通過配置規(guī)則來提高搜索結(jié)果:

可以用 Python 客戶端更新 MeiliSearch 配置,示例代碼:

# 停用詞client.index('movies').update_settings({ 'stopWords': [ 'the', 'a', 'an' ],})# 排序規(guī)則client.index('movies').update_ranking_rules([ "typo", "words", "proximity", "attribute", "wordsPosition", "exactness", "asc(publish_time)", "desc(watch)"])# 查看 stop wordsclient.index('movies').get_stop_words()# 重置設(shè)置# index.reset_settings()# 除了搜索其它操作都是異步,會直接返回一個 updateId 需要通過 ID 查詢處理狀態(tài)# wait_for_pending_update 可阻塞等待處理結(jié)果這些設(shè)置可以有效的提高搜索效果,比如使用停用詞之前,搜索“開源的書籍”命中不了“開源書籍”,加了停用詞即可命中,因為匹配時忽略了輸入內(nèi)容包含的停用詞(無用詞)。

說一個我遇到的坑,我測試搜索效果時發(fā)現(xiàn):go 搜不到,但是 golang 就可以搜索到,排查了半天最后發(fā)現(xiàn)是因為 go 在上面的停用詞字典中

另外,功能上對比 sonic 沒有詞聯(lián)想(suggest),可以通過新建 index+searchableAttributes 實現(xiàn)。

同義詞集合我沒有找到,如果大家有現(xiàn)成的 中/英文 同義詞詞典,歡迎留言告訴我~感謝

4、部署

MeiliSearch 部署很簡單,增加到系統(tǒng)的 systemd 服務(wù)就行了。

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但部署正式環(huán)境,需要注意以下幾點:

  1. 生產(chǎn)環(huán)境必須設(shè)置密碼,開發(fā)環(huán)境無強(qiáng)制
  2. 生產(chǎn)環(huán)境 Web 頁面會關(guān)閉
  3. 沒有遠(yuǎn)程訪問和權(quán)限控制,可以通過 Nginx 實現(xiàn) IP 白名單+ Cerbot 實現(xiàn) HTTPS,提高安全性
  4. 可通過 curl 地址 查看服務(wù)狀態(tài)

以上就是我使用 MeiliSearch 的一些心得,總體給我的感覺:

一條命令即可啟動搜索服務(wù),一行代碼實現(xiàn)搜索功能,有了它我這個搜索小白都能分分鐘實現(xiàn)一個搜索服務(wù),舒服~

愛的結(jié)晶(實戰(zhàn))

我用 MeiliSearch 重寫了 HelloGitHub 小程序的搜索功能,后端用的 FastAPI 框架。除此之外還增加了一些新功能:

  1. 熱門搜索詞
  2. 項目詳情頁
  3. 項目鏡像地址提高訪問速度
  4. 新的界面
HelloGitHub 小程序第二版效果圖如下:

后面計劃增加:信息流、評論、打分、用戶系統(tǒng)、積分系統(tǒng),因為只有我一個人開發(fā),所以進(jìn)度會很慢...但我不會半途而廢噠

最后

如果說 MeiliSearch 缺點的話,我覺得搜索準(zhǔn)確度還有待提高,一方面我需要學(xué)習(xí)下分詞和 NLP 的一些知識,另一方面需要再熟悉下它的 API 和原理,然后再找一些詞典輔助,應(yīng)該能提高準(zhǔn)確度,但心急吃不了熱豆腐慢慢來吧。

最后,希望本文的分享有幫助到你,今天的文章就到這里了。如果你也想分享把玩開源項目的心得,歡迎投稿原創(chuàng)文章給我。

優(yōu)秀的開源項目像散落在海邊的貝殼,需要發(fā)現(xiàn)它的人。
HelloGitHub 就是拾貝者,找開源項目來 HelloGitHub 就對了!

關(guān)鍵詞:實現(xiàn),功能,索引,傻瓜

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關(guān)閉