<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 12, comments - 3, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    輕量級搜索框架

    先介紹一下工具吧:

    Sphinx :Sphinx是一個基于SQL的全文檢索引擎,可以結(jié)合MySQL,PostgreSQL做全文搜索,它可以提供比數(shù)據(jù)庫本身更專業(yè)的搜索功能,使得應(yīng)用程序更容易實現(xiàn)專業(yè)化的全文檢索。Sphinx特別為一些腳本語言設(shè)計搜索API接口,如PHP,Python,Perl,Ruby等,同時為MySQL也設(shè)計了一個存儲引擎插件。

     

    下載方式:http://www.sphinxsearch.com/

    基于sphinx的coreseek:http://www.coreseek.cn/

    中文分詞工具:LibMMSeg:http://www.coreseek.cn/opensource/mmseg/

     

    tokyocabinet:在我第一篇博客有詳細介紹。

    mysql:大家都熟悉的開源數(shù)據(jù)庫。

     

    這個輕量級框架,保守估計,可以支持5線程同時并發(fā)搜索,根據(jù)我自己測試的結(jié)果,tokyocabinet(下稱tc )FIFO隊列返回10w條數(shù)據(jù),只需要10ms,100w條數(shù)據(jù)要100ms左右。tc的key-value方式緩存,保守估計,100w條數(shù)據(jù)100ms沒問題。

     

     介紹一下流程主要部分吧(看圖流程,比較像張宴的“億萬級搜索框架”,老實說當(dāng)時我看過,只是表面了解一下 | 恕我冒犯,大師級的東東我不是很懂,圖片漂亮,但是內(nèi)部實現(xiàn),根本是比較模糊的,算是一半原創(chuàng)吧,哈哈)。

     

    1、程序入口會判斷用戶輸入的關(guān)鍵字是否有關(guān)鍵字緩存,如果不存在,就會調(diào)用sphinx對mysql數(shù)據(jù)庫進行全文檢索。

    然后sphinx會吧搜索索引的文檔id結(jié)果緩存到tc。

    我故意把數(shù)據(jù)庫的文本結(jié)果緩存到FiFo隊列。因為sphinx是不會做文本索引的,所以它返回的知識搜索索引的文檔id,也就是數(shù)據(jù)庫主鍵id(或用戶自定義ID),程序必須要吧結(jié)果id放到數(shù)據(jù)庫搜索,吧文本結(jié)果取出來。雖然mysql根據(jù)id返回搜索結(jié)果的速度很快,(如果單用int類型id以遞增方式查詢mysql數(shù)據(jù)庫,每秒可處理1000w數(shù)據(jù))。但實際不會這么用。所以文本結(jié)果緩存就顯得格外重要了。

    最后通過FIFO隊列,把相同關(guān)鍵字的搜索結(jié)果返回到頁面現(xiàn)實。

     

    2、當(dāng)然,如何關(guān)鍵字緩存存在,就會直接從FIFO隊列返回搜索結(jié)果。

     

    我的想法:

    因為知道sphinx的缺陷,所以想盡辦法彌補,一個基于mysql的全文檢索工具,速度之快,很是讓人佩服。

     

    問題總結(jié):

    1、簡單統(tǒng)計: 用了tc緩存,其實有很大一部分原因是用來做統(tǒng)計。很多搜索引擎,都是用mencache,但是mencache是建立在內(nèi)存上面的,不釋放的話,資源消耗頗大。而tc就不一樣,它是寫入文本的,緩存數(shù)據(jù)得以保存。在做簡單統(tǒng)計的時候,比如說:

    統(tǒng)計"java" 跟"C語言"的用戶搜索情況,我可以從tc中讀出關(guān)鍵詞緩存,知道搜索密度情況。

     

    2、完成復(fù)雜統(tǒng)計: 復(fù)雜統(tǒng)計的話,必須要定義好,復(fù)雜的sql語句,要用到left join這樣那樣的函數(shù),配置比較麻煩。但問題依然可以解決。(說是這么說,但是具體怎么做頭緒還差一丁點~~牽扯到多表查詢,性能如何還是要嘗試嘗試~)

     

    希望看過文章的可以給點意見,我努力完善,獻丑啦~~


    文章來源:http://henry2009.javaeye.com/blog/465834(我的舊博客)

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产亚洲精品国看不卡| 最近2019中文字幕免费看最新 | 免费在线一级毛片| 亚洲一级毛片免费在线观看| h在线观看视频免费网站| 亚洲国产精品一区| 在免费jizzjizz在线播| 亚洲一区二区电影| 成人在线免费看片| 亚洲综合色7777情网站777| 成人无码区免费A片视频WWW| 2020天堂在线亚洲精品专区| 永久免费看mv网站入口| 国产亚洲精品美女久久久久久下载| 国产一区视频在线免费观看| 精品免费久久久久国产一区 | 亚洲网站在线观看| 成人免费无码视频在线网站| 亚洲精品无码永久在线观看男男| 国产成人在线观看免费网站| 特级毛片aaaa级毛片免费| 三上悠亚亚洲一区高清| 亚洲电影免费在线观看| 亚洲精品成人图区| 在线日韩av永久免费观看| 五月婷婷免费视频| 色播亚洲视频在线观看| 最近最新的免费中文字幕| 婷婷亚洲综合一区二区| 亚洲va无码专区国产乱码| 成人浮力影院免费看| 国产成人亚洲精品无码AV大片| 亚洲毛片av日韩av无码| 69av免费观看| 一区二区免费国产在线观看 | 免费一级国产生活片| a级毛片免费高清毛片视频| 亚洲av无码国产综合专区| 国产大片线上免费看| 久久久久成人精品免费播放动漫| 最新亚洲精品国偷自产在线|