1. 程式人生 > >開源搜尋引擎的嘗試《引言》

開源搜尋引擎的嘗試《引言》

部落格主頁:http://blog.csdn.net/minna_d

引言:

    最近想自己基於java完全重底層開始實現一套搜尋, 目前我已寫了一個最最基本的大體框架, 

    內部也做過一些記憶體、響應時間方面的優化,重提交記錄能看出來其實做過很多的嘗試,

    我深感搜尋系統的複雜, 個人精力有限,後面還有很長的路要走,誠邀志同道合之士一起開發。

    沒人加入也無所謂,路過的點個讚我就很滿足啦, 要是能夠加入我一起開發提交點程式碼、fix_bug就更爽歪歪啦

目前的情況:

    自帶search_data.txt文字5497479行單field資料, 穩定記憶體2.8G, 響應時間穩定在8毫秒

    git地址:https://github.com/yujianjun1025/search_engine

執行方式:

    0. 修改logback.xml fileDir 指定日誌目錄

    1. tar -xzvf search_data.txt.tar.gz ./

    2. 啟動耗費3.3G記憶體左右, 建議export MAVEN_OPTS=-Xms50000m,預設MAVEN_OPTS=-Xms10000m 

    3. 啟動執行./run.sh

    4.訪問:http://127.0.0.1:8080/test.json?world=北京&limit=5 ( limit 為空時,預設返回top3000條資料)

返回資料格式:

{
    ret: true,
    data: [
    {
        docId: 164334,
        rank: 24900.37237152425
    },
    {
        docId: 699048,
        rank: 23614.956482398586
    },
    {
        docId: 1903045,
        rank: 18891.965185918867
    },
    {
        docId: 2894797,
        rank: 16583.64799943515
    },
    {
        docId: 311685,
        rank: 16583.64799943515
    }
    ]
}


日誌格式:

[2015-12-05 22:46:07.536] [[email protected]] [INFO ]<logger:195 doSearch>查詢詞:北京, 過濾到符合要求的docId耗時:2.819毫秒, 結果數5
[2015-12-05 22:46:07.794] [[email protected]] [INFO ]<logger:153 doSearch>查詢詞:北京, 求交得到所有docIds耗時:2.999毫秒, 結果數16359
[2015-12-05 22:46:07.795] [[email protected]] [INFO ]<logger:195 doSearch>查詢詞:北京, 過濾到符合要求的docId耗時:1.728毫秒, 結果數5
[2015-12-05 22:46:08.280] [[email protected]] [INFO ]<logger:153 doSearch>查詢詞:北京, 求交得到所有docIds耗時:3.101毫秒, 結果數16359
[2015-12-05 22:46:08.282] [[email protected]] [INFO ]<logger:195 doSearch>查詢詞:北京, 過濾到符合要求的docId耗時:1.87毫秒, 結果數5
[2015-12-05 22:46:24.148] [[email protected]] [INFO ]<logger:153 doSearch>查詢詞:山海, 求交得到所有docIds耗時:3.438毫秒, 結果數4093
[2015-12-05 22:46:24.149] [[email protected]] [INFO ]<logger:195 doSearch>查詢詞:山海, 過濾到符合要求的docId耗時:0.77毫秒, 結果數5
[2015-12-05 22:46:25.348] [[email protected]] [INFO ]<logger:153 doSearch>查詢詞:山海, 求交得到所有docIds耗時:3.694毫秒, 結果數4093
[2015-12-05 22:46:25.349] [[email protected]] [INFO ]<logger:195 doSearch>查詢詞:山海, 過濾到符合要求的docId耗時:0.884毫秒, 結果數5
[2015-12-05 22:46:33.002] [[email protected]] [INFO ]<logger:153 doSearch>查詢詞:上海, 求交得到所有docIds耗時:3.481毫秒, 結果數14477
[2015-12-05 22:46:33.003] [[email protected]] [INFO ]<logger:195 doSearch>查詢詞:上海, 過濾到符合要求的docId耗時:1.331毫秒, 結果數5


接下來需要做的事:

    1、記憶體、響應時間是需要持之以恆的,優化永無止境

    2、分詞,目前還是java自帶的最最基本的string.toArray(),下一步需要做的是將數字分到一起、英文分開, 漢字依然單字

    3、查詢語法,目前僅支援緊密度查詢, 如“AB”@all_filed這種查詢語法,下一步需要豐富查詢語法的解析與索引 

    4、檢索欄位,目前僅支援單field檢索,下一步還需要多文字域檢索及屬性欄位檢索

個人郵箱:[email protected]

相關推薦

開源搜尋引擎嘗試引言

部落格主頁:http://blog.csdn.net/minna_d 引言:     最近想自己基於java完全重底層開始實現一套搜尋, 目前我已寫了一個最最基本的大體框架,      內部也做過一些記憶體、響應時間方面的優化,重提交記錄能看出來其實做過很多的嘗試,  

開源搜尋引擎Lucene、Solr、Sphinx等優劣勢比較

開源搜尋引擎分類 1.Lucene系搜尋引擎,java開發,包括: Lucene Solr Elasticsearch Katta、Compass等都是基於Lucene封裝。 你可以想象Lucene繫有多強大。 2.Sphinx搜素引擎,c

基於 Lucene 的8 個開源搜尋引擎

Lucene是一種功能強大且被廣泛使用的搜尋引擎,以下列出8種基於Lucene的搜尋引擎,你可以想象他們有多麼強大... Apache Solr Solr是一個高效能,採用

Solr vs. Elasticsearch誰是開源搜尋引擎王者

當前是雲端計算和資料快速增長的時代,今天的應用程式正以PB級和ZB級的速度生產資料,但人們依然在不停的追求更高更快的效能需求。隨著資料的堆積,如何快速有效的搜尋這些資料,成為對後端服務的挑戰。本文,我們將比較業界兩個最流行的開源搜尋引擎,Solr和ElasticSearch。兩者都建立在Apache Luce

Windows下開源搜尋引擎Nutch1.2的安裝

Nutch是Apache組織的一個開源專案,利用它使用者可以建立自己內部網的搜尋引擎,也可以建立針對整個網路的搜尋引擎。    兩年前Nutch0.9版本的時候我寫了個針對Linux的安裝介紹,最近nutch1.2出來了,很想試試有什麼新功能,可惜沒有專門的Linux伺服器,

【轉】幾種C/C++開發的開源搜尋引擎

(1)CLucene CLucene是Lucene的一個C++埠,Lucene是一個基於java的高效能的全文搜尋引擎。CLucene因為使用C++編寫,所以理論上要比lucene快。 (2)Xapian Xapian是一個用C++編寫的全文檢索程式,他的作用類似於Java的lucene。儘管在Java世

大資料處理方面的 7 個開源搜尋引擎

想要學習更專業的網際網路知識歡迎加入官網技術交流Q群:547147889 大資料是一個包括一切的術語,指的是資料集很大很複雜,他們需要特別設計的硬體和軟體工具。資料集通常是 T 或者更大級別。這些資料集從各種各樣的來源建立,包括感測器,收集氣象資訊,公開可用的

微信小程式UI 有贊開源UI嘗試(https://github.com/youzan/zanui-weapp)

1.安裝npm參考https://blog.csdn.net/traguezw/article/details/54577560可能遇到以下問題1.下載地址官方下載不了可以在中文網上下載http://nodejs.cn/2.文章中修改path路徑沒有必要,可以額外新增glob

20款開源搜尋引擎介紹與比較

開放原始碼搜尋引擎為人們學習、研究並掌握搜尋技術提供了極好的途徑與素材,推動了搜尋技術的普及與發展,使越來越多的人開始瞭解並推廣使用搜索技術。使用開源搜尋引擎,可以大大縮短構建搜尋應用的週期,並可根據應用需求打造個性化搜尋應用,甚至構建符合特定需求的搜尋引擎系統。搜尋引擎的開

最新開源搜尋引擎研究

LIUS即Lucene Index Update and Search的縮寫,它是以Lucene為基礎發展起來的一種文字索引框架,和Lucene一樣,同樣可以看作搜尋引擎開發工具包。它在Lucene的基礎上作了一些相應的研究及添加了一些新的功能。LIUS藉助於許多開源軟體,可以直接對各種不同格式/型別的文件進

開源搜尋引擎排名第一,Elasticsearch是如何做到的?

一、引言   隨著移動網際網路、物聯網、雲端計算等資訊科技蓬勃發展,資料量呈爆炸式增長。如今我們可以輕易得從海量資料裡找到想要的資訊,離不開搜尋引擎技術的幫助。 ​ 作為開源搜尋引擎領域排名第一的 Elasticsearch,能夠讓我們無需深入瞭解背後複雜的資訊檢索原理,就可實現基本的全文檢索功能,

聯想的S415電腦,Debian8.8開機後亮度值始終最大,嘗試過各種方法,始終無法解決,最後安裝開源驅動後,成功

firmware 保存 ces fst pack 聯系 輸入 aptitude reboot 安裝ATI顯卡驅動(開源)(方法步驟來自Debian WiKi) A.先升級可用的包 # aptitude upgrade B.安裝下面3個包 # apt-get i

開源搜尋引擎——詳細概述

開源的搜尋引擎 搜尋服務主要分為兩個部分:爬蟲crawler和查詢searcher。 爬蟲的工作策略一般則可以分為累積式抓取(cumulative crawling)和增量式抓取(incrementalcrawling)兩種。 1    爬蟲 1.1  nutch    

搜尋引擎elastic的一次偉大的嘗試

接觸elastic,是因為它恰好和需求匹配。 我們在六月份的時候決定要做一款偉大的產品,這款產品是基於東哥幾年來嘔心瀝血蒐集來的各種基因相關資料庫資源以及nlp訓練出來的資料。 一次公交車的偶遇東哥知道了我在尋求好的機會,問我要不要加入,此刻他已經有了創業的

開源之路】溫蒂、一次簡單的嘗試

## 乾點正事吧,巴巴託斯 #### ##V1.01 2020/11/23 溫蒂類資訊對比處理工具包,目前可以用來對比更新前後的類資訊。 --- [weed的github地址](https://github.com/alexRyccc/weed) 因為工作中需要進行資料對比,所以經常需要在程式碼的增刪改

開源】NodeJS仿WebApi路由

ole ati amt nbsp amd 使用 ise erp 一個 用過WebApi或Asp.net MVC的都知道微軟的路由設計得非常好,十分方便,也十分靈活。雖然個人看來是有的太靈活了,team內的不同開發很容易使用不同的路由方式而顯得有點混亂。 不過這不是重點,我在

開源框架那點事兒19》:特斯拉建“樁”與開源的生命力

充電站 otto 期權 eas gb2 平臺 程序 蘋果 名詞 在美國的矽谷,在中國的中關村,很多的技術先驅者懷揣夢想。用激情不懈地追求著他們宏遠的目標和巨大的個人財富。開源。正在成為這個時代眼下最火熱的名詞之中的一個。開源精神,作為一種合作協同的驅動力,正在發展為一種更

10個免費開源的JS音樂播放器插件

一個 很好 tle ef7 制作 obi tex ios開發者 選擇 音樂播放器在網頁設計中有時候會用到,比如一些時尚類、音樂或影視類等項目,但這些 網頁播放器 插件比較少見,所以這裏為大家整理一個集合,也許會有用到的時候。 下面整理的播放器有些是支持自適應的,如果需要

關於仿酷狗音樂播放器開源:尋求一套音樂播放器素材,讓仿酷狗開源

替換 log 設有 ext 軟件 水平 iss 開源 可靠 轉載請說明原出處,謝謝~~ 距離公布測試版的仿酷狗音樂播放器。已經幾個月過去了。期間非常多網友加我QQ來問我開源的問題,我也早有開源意向。但我也一直沒有得到可靠的信息,保證開

Ng第一課:引言(Introduction)

定義 分享 machine 人工 離散 技能 相同 常用 都是 Machine Learning(機器學習)是研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能。 它是人工智能的核心,是使計算機具有智能的根本途徑,其應