久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

用 Elasticsearch 造個“知網”難不難,?

 銘毅天下 2022-05-24 發(fā)布于廣東

近期“知網”的熱度一直不減,本來可以拿一些熱點圖片,、網友評論作為開場,。算了,這不是我一個技術博主該做的,。

此處僅拿2022年5月24日早晨 6:00 微博搜索“知網”得到的前20條動態(tài)信息的詞云說話,。

基于 ik_smart 中文分詞器的詞云圖

在網友不建議專家建議的大環(huán)境下,作為老百姓對“知網”的建議如下:

  • 1,、尊重版權,,每篇文檔被下載(人工備案下載,非爬蟲)獲得的收益一半(比例待商榷)費用給第一作者,,這會極大的激發(fā)大家的創(chuàng)作動力,。

  • 2、將文章收益,、被引用次數(shù)等作為未來文章評價指標,。好文章(被引用多、被下載多)會有高收益,,不好的文章會石沉大海,。這會極大鼓勵高校研究人員寫好文章,。

此處省略1萬字......

當然,這些都不是我們平頭老百姓該操心的事,,作為技術人員,,我更關注“知網”的本質——搜索。進一步說根據(jù)用戶復雜的搜索條件,,召回滿意的結果,。

問題來了,Elasticsearch 三大核心應用場景之一全文檢索,。用 Elasticsearch 能不能造一個“知網”呢,?

這引發(fā)了我的極大的興趣。

1,、需求分析

首先,,為避免“井底之蛙”,需求降級,,降低到自己可控的程度,。

  • 天眼查了一下:“知網成立于2004年,共1649人”,。得出初步結論,,這是有18年技術積累的公司。
  • 版權原因,,我們也拿不到知網那么多的數(shù)據(jù),,只能先象征性的拿手里的文檔模擬一下,研究技術的可行性,。

其次,,“知網”支持的搜索非常復雜,我們只研究“一框”搜索,。

把標題檢索搞明白了,,其他只是時間問題。

再次,,“知網”是全網論文的集合體,,我們聚焦本地磁盤文件的集合體。

文件類型包含但不限于:.txt, .pdf, .ppt, .doc,.docx 等文檔,。

綜上,,為避免落成“螳臂當車”的笑柄,我們把需求轉化為簡版的“知網”——本地知識庫檢索系統(tǒng),。

核心功能點如下:

  • 支持多種格式歷史文檔(pdf,、ppt、doc,、xls,、txt)的解析及索引化,。
  • 支持文檔基礎數(shù)據(jù)(標題、大小,、發(fā)布時間,、修改時間、作者,、全文)的建模,。
  • 支持新寫入文檔數(shù)據(jù)的解析及索引化,定時周期可配置,。
  • 支持建模后的數(shù)據(jù)存入Elasticsearch,,支持通過瀏覽器訪問。
  • 支持kibana可視化分析,。

2,、技術選型

原則:不重復造輪子,自己可控,,使用已有的,、成熟的、開源的技術棧體系,。

2017 年我?guī)ьI小伙伴做過類似的知識庫檢索系統(tǒng),,只不過當時的技術體系較舊,Elasticsearch 也是2.X 版本,。

相關技術實現(xiàn)如下兩圖所示:

關于文檔格式轉換及解析器,,又會涉及如下 N 多技術棧。

早期的技術實現(xiàn)大半時間都花費在了文檔格式轉換和解析處理上,。有沒有更好的實現(xiàn)方式,一直是我關心的問題,。從最早的自己找各類解析工具用到了 openoffice 組件,,到內容檢測和分析框架 Tika,再到 Elasticsearch 自身支持的 Ingest Attachment 文檔處理器插件,,最終到 Elastic 工程師開源的文檔爬蟲工具——FSCrawler,。

2.1 OpenOffice

相比于閉源的金山WPS、微軟Office,,OpenOffice 現(xiàn)在已經成為全球領先的跨平臺,、全功能、多語言,、公開對象接口,、可擴展文件格式的開源辦公軟件 。引入相關 jar 包,,即可實現(xiàn)文檔的解析工作,。

http://www./

2.2 Tika

Apache Tika 用Java編寫,,用于文件類型檢測和從各種格式的文件內容提取的庫。

使用Tika可以開發(fā)出通用型檢測器和內容提取到的不同類型的文件,,如電子表格,,文本文件,圖像,,PDF文件甚至多媒體輸入格式,,在一定程度上提取結構化文本以及元數(shù)據(jù)。

https://tika./

2.3 Ingest Attachment 文件處理器插件

基于 Tika 實現(xiàn)的 Elasticsearch 文件處理插件,,支持:PPT,、XLS、PDF,、WORD 等格式,。

需要單獨安裝實現(xiàn),安裝實現(xiàn)如下:

sudo bin/elasticsearch-plugin install ingest-attachment

https://www./guide/en/elasticsearch/plugins/current/ingest-attachment.html

2.4 FSCrawler 文檔爬蟲工具

2019-02-25 我在社群給小伙伴推薦過,,當時我寫了如下的兩段話,。

應用場景:文件系統(tǒng)檢索、中文知識庫構建,、簡化pdf,、office等文檔解析繁瑣步驟,一鍵導入構建索引實現(xiàn)檢索等操作,。

使用效果(推薦理由):

  • 1,、效果不錯,已經集成提卡映射Mapping可定制,。
  • 2,、集成得非常好。自己寫的話:第一步,,不同類型解析(pdf還有可能涉及OCR識別),、第二步:定好mapping,第三步:導入,。
  • 3,、各種配置寫得很一目了然,上手快,。
  • 4,、全部開源,如果有需要可以定制化改代碼,。
  • 5,、支持5.x,6.x,以及還未公布的7.x,。(ps現(xiàn)在 7.X,、8.X 都已經支持)
  • 6、作者貌似是 Elastic 公司的,。

https://github.com/dadoonet/fscrawler

https://t./02EMR7MRn

誠然,,僅從更貼合 Elasticsearch 實現(xiàn)的角度來講,F(xiàn)SCrawler 是文檔分析的“終結者”,。它幾乎包含了我上面所述兩幅圖的全部技術實現(xiàn),。

所以,我們選型 FSCrawler 作為文檔數(shù)據(jù)源處理+寫入 Elasticsearch 同步工具,。

2.5 Python Flask 輕量級 Web 框架

Flask 是目前最流行的 Python Web 框架之一,。自 2010 年開源以來,F(xiàn)lask 受到了越來越多的 Python 開發(fā)者的喜歡,,其受歡迎程度不輸于 Django,。

Flask 足夠輕量,只用 5 行就能寫出一個最簡單的 Web 程序,,但并不簡陋,,它能適應各類項目的開發(fā)。

截止:2022-05-24,,GitHub Flask 框架 star 數(shù):59.1k,。

下圖代表 Google 搜索走勢,黃色:springboot,,藍色:django,,藍色:flask。flask 和 django 走勢基本一致,,受歡迎程度較高,。

基于此,Web 部分我們選型 Python Flask 框架,。

3,、 整體架構

基于前面的需求分析和技術選型,整體架構&數(shù)據(jù)流圖如下圖所示,。

相當于之前的分類型文檔解析自己獨立實現(xiàn),F(xiàn)SCrawler 可謂“大包大攬”,、“以一敵十”,,之前最復雜、最困難的工作全部交由 FSCrawler 完成,,包含但不限于:

  • PDF,、DOC、XLS、TXT等文檔讀取解析
  • Elasticsearch 數(shù)據(jù)建模
  • 批量數(shù)據(jù)同步寫入 Elasticsearch
  • 定時同步任務
  • 針對特定圖片式樣的 PDF 文檔,,需要OCR 識別實現(xiàn)

有了上面的圖,,整體就會非常釋然,就剩下四個字“干就完了”,。

4,、 系統(tǒng)實現(xiàn)

直接來個 Gif 動圖,看一下實現(xiàn)效果,。

相比于之前 java 開發(fā)的 web 系統(tǒng),,這次是我全棧實現(xiàn),涉及到技術包含但不限于:Html,、CSS,、Javascript、Python,、Flask,、Elasticsearch、Kibana,、FSCrawler,。

  • Html:頁面框架。

  • CSS:頁面美化,。

  • JavaScript:動態(tài)更新樣式的腳本實現(xiàn),。

  • Python:后端服務接口。

  • Flask:后端服務框架,。

  • Elasticsearch:數(shù)據(jù)落地存儲,。

  • Kibana:數(shù)據(jù)可視化分析。

  • FSCrawler:本地磁盤文檔爬蟲解析并寫入Elasticsearch,。

由于足夠輕量級,,累計核心代碼不到 1000 行。

取名為:織網知識庫檢索系統(tǒng),。此“織網”非彼“知網”,。“織”強調的“精耕細作,、日積月累,、功不唐捐、水滴石穿”,。

首頁
列表頁

詳情頁

各位基礎穩(wěn)定數(shù)據(jù)統(tǒng)計如下:

本系統(tǒng)涉及的文檔數(shù)比較少,,但要對 Elastic 充滿信心。Elasticsearch 支持動態(tài)擴展,,支持成千上萬,、數(shù)億、數(shù)十億只是配置問題和數(shù)據(jù)量問題,技術層面沒有問題,。

5,、小結

回歸文章初心,“知網”是個非常龐大的功能體,,僅就檢索細節(jié)討論的話,,涉及很大一塊的內容就是內容分析(分詞處理、命名實體識別等 NLP 自然語言處理領域的知識),、以及文檔之間的關聯(lián)性(引用,、被引用)等,是不小的工程,。

本文是以“知網”的文檔檢索出發(fā),,構建了本地知識庫系統(tǒng),驗證了 Elasticsearch 技術棧結合 Python Flask 構建知識庫檢索系統(tǒng)的可行性,。

當然,,一個系統(tǒng)的構建還會涉及很多其他細節(jié)內容,篇幅有限,。我們找個時間給大家視頻分享一下,,一起探討一下 Elasticsearch 在知識庫檢索系統(tǒng)中的應用。

掃碼一起視頻聊一聊

參考
李輝《Flask Web 開發(fā)實戰(zhàn)》
https://blog.csdn.net/laoyang360/article/details/75933314
Elasticsearch打造知識庫檢索系統(tǒng)
https:///analytics-vidhya/building-a-basic-search-engine-using-elasticsearch-fscrawler-97104c1ea220

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多