<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    輕量級搜索框架

    先介紹一下工具吧:

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

     

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

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

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

     

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

    mysql:大家都熟悉的開源數據庫。

     

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

     

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

     

    1、程序入口會判斷用戶輸入的關鍵字是否有關鍵字緩存,如果不存在,就會調用sphinx對mysql數據庫進行全文檢索。

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

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

    最后通過FIFO隊列,把相同關鍵字的搜索結果返回到頁面現實。

     

    2、當然,如何關鍵字緩存存在,就會直接從FIFO隊列返回搜索結果。

     

    我的想法:

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

     

    問題總結:

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

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

     

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

     

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


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

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


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 亚洲综合精品一二三区在线| 亚洲AV无码久久久久网站蜜桃 | 亚洲精品无码av人在线观看| 伊人免费在线观看| 亚洲成人免费网址| 内射无码专区久久亚洲| 免费人成黄页在线观看日本| 亚洲春色另类小说| 亚洲裸男gv网站| 100部毛片免费全部播放完整| 亚洲色精品三区二区一区| 亚洲中文字幕丝袜制服一区| 中文字幕免费在线| 黄色免费在线观看网址| 亚洲性天天干天天摸| 亚洲91av视频| 热99re久久免费视精品频软件 | 另类免费视频一区二区在线观看| 亚洲乱码卡三乱码新区| 亚洲第一成人影院| 无码国产精品一区二区免费式直播| 黄色一级毛片免费| 亚洲一区二区久久| 亚洲成av人片天堂网| v片免费在线观看| 亚洲黄色在线电影| 亚洲偷自拍拍综合网| 免费看国产精品3a黄的视频| 免费91麻豆精品国产自产在线观看| 亚洲人成网国产最新在线| 日本无卡码免费一区二区三区| 日韩精品在线免费观看| 久久久久亚洲AV无码去区首| 777亚洲精品乱码久久久久久 | 亚洲黄色三级视频| 久久亚洲色一区二区三区| 午夜a级成人免费毛片| 真人做A免费观看| 无码国产精品一区二区免费vr | 亚洲国产av高清无码| 日本亚洲视频在线|