今天給大家?guī)?lái)一款輕盈、人人都會(huì)用的開(kāi)源傻瓜" />

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

18143453325 在線咨詢(xún) 在線咨詢(xún)
18143453325 在線咨詢(xún)
所在位置: 首頁(yè) > 營(yíng)銷(xiāo)資訊 > 電子商務(wù) > 有什么比較好的開(kāi)源搜索引擎?

有什么比較好的開(kāi)源搜索引擎?

時(shí)間:2023-04-02 07:46:02 | 來(lái)源:電子商務(wù)

時(shí)間:2023-04-02 07:46:02 來(lái)源:電子商務(wù)



在 HelloGitHub 找到有趣、入門(mén)級(jí)的開(kāi)源項(xiàng)目,大家好這里是 HelloGitHub。說(shuō)到開(kāi)源搜索引擎第一個(gè)想到的應(yīng)該是鼎鼎大名的 ElasticSearch,但 ES 對(duì)于個(gè)人項(xiàng)目有些重。

今天給大家?guī)?lái)一款輕盈、人人都會(huì)用的開(kāi)源傻瓜搜索引擎——MeiliSearch

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

我的要求并不高

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

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

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

部署+配置簡(jiǎn)單、支持中文分詞、搜索速度快、輕量級(jí)開(kāi)源搜索引擎項(xiàng)目。

俗稱(chēng):傻瓜中文搜索引擎。

它有個(gè)美麗的名字

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

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

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

簡(jiǎn)單的開(kāi)始

紙上得來(lái)終覺(jué)淺,得上手試試效果。

1、安裝和啟動(dòng)

Linux & Mac OS 的一鍵安裝和啟動(dòng)的命令:

curl -L https://install.meilisearch.com | sh./meilisearch這個(gè)安裝夠不夠傻瓜 啟動(dòng)成功如下圖:

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

2、基本操作

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

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

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

import meilisearchclient = meilisearch.Client('http://127.0.0.1:7700', 'masterKey') # masterKey 是密碼# index 相當(dāng)于數(shù)據(jù)庫(kù)的表index = client.index('books')# 準(zhǔn)備寫(xiě)入搜索的數(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()# 寫(xiě):result = index.add_documents(documents) # 該引擎會(huì)根據(jù)寫(xiě)入數(shù)據(jù) ID 做替換或者新增的操作# 寫(xiě)入后并不代表搜索引擎處理完成,可以查看返回 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" }], // 頁(yè) "offset" => 0, // 每頁(yè)條數(shù) "limit" => 20, // 處理耗時(shí) "processingTimeMs" => 1, // 查詢(xún)的內(nèi)容 "query" => "harry pottre"}"""至此已經(jīng)實(shí)現(xiàn)了搜索的最基本的功能,但探索不止于此。

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

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

可以用 Python 客戶(hù)端更新 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()# 除了搜索其它操作都是異步,會(huì)直接返回一個(gè) updateId 需要通過(guò) ID 查詢(xún)處理狀態(tài)# wait_for_pending_update 可阻塞等待處理結(jié)果這些設(shè)置可以有效的提高搜索效果,比如使用停用詞之前,搜索“開(kāi)源的書(shū)籍”命中不了“開(kāi)源書(shū)籍”,加了停用詞即可命中,因?yàn)槠ヅ鋾r(shí)忽略了輸入內(nèi)容包含的停用詞(無(wú)用詞)。

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

另外,功能上對(duì)比 sonic 沒(méi)有詞聯(lián)想(suggest),可以通過(guò)新建 index+searchableAttributes 實(shí)現(xiàn)。

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

4、部署

MeiliSearch 部署很簡(jiǎn)單,增加到系統(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)境,需要注意以下幾點(diǎn):

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

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

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

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

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

  1. 熱門(mén)搜索詞
  2. 項(xiàng)目詳情頁(yè)
  3. 項(xiàng)目鏡像地址提高訪問(wèn)速度
  4. 新的界面
HelloGitHub 小程序第二版效果圖如下:

后面計(jì)劃增加:信息流、評(píng)論、打分、用戶(hù)系統(tǒng)、積分系統(tǒng),因?yàn)橹挥形乙粋€(gè)人開(kāi)發(fā),所以進(jìn)度會(huì)很慢...但我不會(huì)半途而廢噠

最后

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

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

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

關(guān)鍵詞:索引

74
73
25
news

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

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