







摘要:介紹了鋼鐵行業信息服務平臺分布式搜索引擎中的相關技術:Elasticsearch搜索引擎的選擇與使用;冶金行業專業詞表的建設;搜索引擎相關度的計算方式與修改相關度、以及Elasticsearch集群的特性。
關鍵詞:鋼鐵;搜索引擎;冶金專業詞表;分詞;集群
0 引言
歷經多年的發展,大多數鋼鐵企業積累了一系列有價值的信息資源,并圍繞市場拓展和科技研發等業務開展了一系列信息研究工作。但是,面對日益嚴峻的行業形勢,一些鋼鐵企業在戰略研究、市場研究、技術創新、競爭對手研究等諸多層面,以及在信息獲取、信息分析、信息共享、信息管理等環節,依然缺乏有效的信息資源和方便快捷的工具支持,這在一定程度上影響了鋼鐵企業的信息敏感度和決策制定執行效率。如何更為全面、快捷、有效地把握產業政策、行業動向、了解競爭對手、洞察市場機會、尋求技術創新,為企業提供創新決策支持,成為一些鋼鐵企業面臨的問題。
鋼鐵企業信息服務平臺用來為鋼鐵企業提供戰略決策支持,促進提高企業的核心競爭力,信息服務平臺主要基于信息采集、智能檢索、語義分析、文本挖掘等核心技術,對企業自身、競爭對手和企業外部環境的信息進行收集、存儲、處理、分析和應用。功能完備的企業科技信息服務平臺可以充當企業的預警系統和決策支持系統。
越來越多的鋼鐵企業選擇進行信息平臺建設,實現信息資源的價值。在鋼鐵企業信息平臺建設的過程中,一些關鍵的技術是決定平臺建設成功與否的關鍵。而其中,搜索功能的實現是值得關注的。
1 關于搜索引擎的選擇
在早期,Apache Solr是最主要的搜索引擎技術,但隨著發展Elasticsearch已經漸漸超越了Solr,如圖1。
Elasticsearch提供了一個強大的搜索解決方案。通過其簡單的RESTfUIAPI接口,可以輕松地集成Elasticsearch到項目中,實現實時更新文檔庫,并從文檔中快速檢索出符合用戶搜索條件的數據。
Elasticsearch的分布式特性使得它在處理海量數據時具有出色的性能。實時查詢處理能力更強,能夠應對大規模并發搜索請求。同時,它還提供了靈活的伸縮性配置,可以根據搜索數據規模的增長進行擴展,確保系統的穩定性和可用性。
Elasticsearch還具備全文搜索的能力,能夠將復雜的搜索功能如布爾査詢、短語査詢、過濾器、排序、分頁等都封裝進一個平臺。能夠輕松地實現復雜的搜索需求,提升用戶體驗和系統的功能性。
2 冶金專業詞表建設
搜索引擎詞表在搜索引擎中扮演著至關重要的角色。它不僅是搜索引擎技術架構中的一個核心組成部分,還直接影響到搜索引擎的查詢效率、相關性排序等多個方面。
搜索引擎詞表通過預定義和優化關鍵詞集合,使得搜索引擎能夠快速識別用戶輸入的查詢意圖,并高效地匹配到相關的網頁、文檔或信息。這大大減少了搜索引擎在處理查詢請求時的計算量和響應時間。
詞表不僅包含關鍵詞,還可能包括這些關鍵詞的權重、類別、同義詞、反義詞等信息。這些信息有助于搜索引擎更準確地理解用戶查詢的上下文和意圖,從而更精準地排序搜索結果,使用戶更容易找到他們真正需要的信息。
處理中文分詞,一般會使用IK分詞器。ik分詞器包含兩種模式:ik_smart:最少切分,粗粒度;ik_max_word:最細切分,細粒度。
要拓展ik分詞器的詞庫,需要修改ik分詞器目錄下config目錄中的IkAnalyzer.cfg.xml文件:
<!--用戶可以在這里配置自己的擴展字典 -->
<entry key=”ext_dict”>extra_single_word_full.dic;extra_name_author.dic;
extra_words_searches.dic</entry>
然后在以上文件中,添加想要拓展的詞語:
復合脫氧
易切削鋼
規圓機
花紋板
鞍山鋼鐵公司礦山動力廠
77.080
vertical casting machine
……
冶金專業詞表、作者詞表、作者單位詞表都需要在此處進行配置,以提高檢索的精確度和相關性。
禁用某些敏感詞條,也是修改ik分詞器目錄下config目錄中的IkAnalyzer.cfg.xml文件:
<!--用戶可以在這里配置自己的擴展停止詞字典-->
<entry key=”ext_stopwords”></entry>
3 相關性計算
當我們利用match查詢時,文檔結果會根據與搜索詞條的關聯度打分(_score),返回結果時按照分值降序排列。
早期的Elasticsearch版本采用TF-IDF算法,相關度會隨著詞頻增加而越來越大,TF-IDF算法如下:
elasticsearch 5.0版本之后,默認采用最新的BM25算法,會隨著詞頻增加而增大,但增長曲線會趨于水平。BM25算法如下:
兩種算法的相關度趨勢增長如圖2。
使用 function score query,可以修改文檔的相關性算分(query score),根據新得到的算分排序,如圖3、圖4。
在查詢中通過上述操作,在搜索結果修改了相關鋼企的查詢排名,使其顯示排序靠前。
4 使用Elasticsearch集群
單機的Elasticsearch做數據存儲,必然面臨兩個問題:海量數據存儲問題、單點故障問題。
因此,我們選擇了采用三臺服務器搭建集群的方案,實現可擴展性、高可用性、負載均衡、容錯性和靈活性等目標,來應對大規模數據處理和復雜查詢的需求,如圖5。
可擴展性:
隨著數據量的不斷增長,單個節點的處理能力可能會達到瓶頸。通過將數據分布在多個節點上,Elasticsearch 集群可以水平擴展,以處理更大的數據集和更高的查詢負載。
集群允許根據需要添加或移除節點,以動態調整處理能力,從而適應不同的工作負載需求。
高可用性:
集群中的節點可以相互復制數據,實現數據的冗余存儲。這意味著即使某個節點出現故障,集群中的其他節點仍然可以提供服務,從而保證了系統的高可用性。
Elasticsearch 提供了多種數據復制策略(如分片復制),以確保數據的可靠性和容錯性。
負載均衡:
集群可以自動將查詢請求分發到多個節點上進行處理,從而平衡各個節點的負載。這有助于減少查詢延遲,提高系統的整體性能。
Elasticsearch 的分片機制使得數據可以分布在多個節點上,查詢時可以根據分片的位置來優化查詢路徑,進一步減少查詢時間。
容錯性:
集群中的節點會定期相互通信,以檢測節點的健康狀態和可用性。一旦某個節點出現故障,集群會自動重新分配該節點上的數據到其他健康的節點上,從而確保數據的完整性和系統的穩定性。
Elasticsearch 還提供了自動故障轉移機制,以確保在節點故障時,系統能夠無縫地切換到備份節點,繼續提供服務。
靈活性:
集群架構使得 Elasticsearch 能夠適應不同的部署場景和需求。無論是云環境、虛擬化環境還是物理服務器,Elasticsearch 都可以靈活地部署和擴展。
集群還支持多種配置選項,如分片數量、復制因子等,可以根據具體的應用場景進行優化和調整。
5 結語
Elasticsearch是一款非常強大的開源搜索引擎,可以用來實現搜索、統計、分析等功能,幫助我們從海量數據中快速找到需要的內容。
通過對搜索引擎技術的研究使用,使我們能夠建設搜索功能更加強大信息服務平臺,為企業提供更完善高效的服務。