<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                #全文檢索原理 ##數據查詢 1. 結構化數據,有固定格式或有限長度 賬號、密碼、分數等 一般通過關系型數據庫存儲和查詢,建立索引 2. 非結構化數據,不定長或無固定格式數據 郵件內容、word文檔 可以通過順序查找,例如windows搜索和linux grep ##全文檢索原理 ###把非結構化數據轉變成結構化數據,分2大部分: * 索引:把非結構化數據分解,創建詞的索引 反向索引?倒排表? * 搜索:只需在創建的索引里直接獲取而不需掃描原文 關鍵在于排序 ![](https://box.kancloud.cn/2016-05-05_572abe6ace48b.png) ![](https://box.kancloud.cn/2016-05-05_572abe6b11bd3.png) ###詞法分析和語法分析 **分詞(Tokenizer):** a)單詞 b)去標點 c)停詞(詞元Token) d)小寫、詞根(詞Term) 語法分析: '+ - or ””site link **關于中文分詞:** a)二分法 b)詞典法 c)最短匹配、最長匹配 d)復合分詞 ![](https://box.kancloud.cn/2016-05-05_572abe6b68524.png) ![](https://box.kancloud.cn/2016-05-05_572abe6bd4ca5.png) ##爬蟲協議 rebots.txt User-agent: * Disallow: /reg/ Allow: /*.html* Disallow: /*php?* #解決方案之SQL全文索引 ##全文檢索解決方案 1. 關系型DB全文索引:MySQL FULLTEXT 不需要額外開發,功能受限 2. 腳本語言SQL結合全文檢索:Sphinx Xunsearch 與SQL和腳本語言結合緊密,性能好 3. 完全定制全文檢索lucene 功能強大,開發量大 4. 網絡爬蟲與搜索:Nutch與Solr 直接使用,適合簡單快速獲取信息 ##MySQL全文索引示例 語法: 索引:fulltext key(field) 查詢:where MATCH(field) AGAINST(‘word’) 配置: MyISAM: ft_min_word_len、ft_max_word_len ft_stopword_file ft_query_expansion_limit:使用with query expansion進行全文索引的最大匹配數 InnoDB:innodb_ft_min_token_size ##三種查詢模式: 1. NATURAL LANGUAGE MODE 默認自然語言模式,多于50%忽略、相關性排序 2. BOOLEAN MODE 不排序、無限制,可以有語法 3. WITH QUERY EXPANSION 自然語言模式的二次查詢 ##MySQL全文索引限制 1. 只有MyISAM表支持(5.6以后innodb也支持),只支持char、varchar、text列 2. 對大多數的多字節字符集適用,索引列必須使用相同的字符集和校驗碼(collation)。 3. 表意性語言,如漢語、日語沒有詞分界符,全文檢索不支持。 4. 自然語言檢索必須對檢索列單獨建全文索引,布爾檢索可以在非索引的列上進行,但 會慢一些。 5. against后的參數必須是常量字符串。 6. 索引沒有記錄關鍵詞在字符串中的位置,排序算法太單一。 7. 索引不在內存中檢索速度會很慢。索引有碎片時也會很慢,所以需要更頻繁的 optimize table操作。 8. 全文索引對于insert、update、delete都很慢。 ##MySQL全文索引中文分詞解決辦法 1. mysql插件 編譯模塊或動態加載插件 mysqlcft 2. 簡單解決 a)增加一個字段建立全文索引 b)程序里分詞后存入這個冗余字段(有php庫和模塊) c)要全文檢索時就查詢這個冗余字段 #Sphinx與MySQL全文檢索 ##大數據量全文檢索 1. 大數據量采用獨立搜索引擎 2. 對關系型DB建立索引,只存儲id 3. 查詢時先從搜索引擎查詢出id 4. 再根據id到關系型DB查詢其他數據 ##Sphinx & Coreseek 1. 和sql、腳本語言php等結合緊密 2. 索引搜索性能高 3. Coreseek基于Sphinx加入中文分詞 ##Coreseek安裝與使用 安裝:http://www.coreseek.cn 特別說明: 1. xml運行需要expat expat-devel 2. src/Makefile少了參數 -liconv 其他按官網簡單說明,安裝mmseg中文分詞,安裝coreseek程序 testpack下有索引、搜索示例: mmseg分詞 index索引 search查詢 searchd守護進程 有php和py的api封裝 php調用示例: /usr/local/coreseek/bin/searchd -c etc/quanzhan.conf php api/test.php 全棧工程師 ##訊搜 安裝:http://www.xunsearch.com 索引設計基于Xapian 中文分詞scws php SDK ![](https://box.kancloud.cn/2016-05-05_572abe6c3bbca.png) #Lucene Api調用 ##Lucene資料 1. http://lucene.apache.org/ 只是工具Api 2. 開源早、資源占用少、性能高、java跨平臺、Api簡單易用、翻譯成多種 語言版本 3. 基于Lucene的眾多應用封裝 Solr:和lucene同步,搜索完全實現,提供多種格式接口,web管理界面 Nutch:高效爬蟲,和Solr完全兼容 Compass:數據庫映射、事務管理 Elastic Search:分布式RESTful風格接口 ##Lucene開發 API開發,索引的原理 問題: 1. 多次索引會重復嗎? 2. 如何更新和刪除? 3. 多字段如何搜索? 4. 排序、與、或等條件搜索? 5. 如何自動觸發索引? 6. 跨語言如何調用? #Solr與Nutch集成 ##什么是Solr與Nutch 1. 不需要開發代碼,不需要了解Lucene及接口 2. Solr完成專業搜索封裝及http接口 3. Nutch爬蟲定制抓取數據只需要簡單配置 版本: a)Solr 4.10,與Lucene同步 b)nutch分1.X系列(更穩定高效,更新頻繁)和2.X系列(抽象數據層實現多種方式) 集成問題:都是apache項目,采用Lucene版本不同但問題不大,修改字段配置即可 集成方法:Nutch爬蟲入庫直接指定Solr地址 ##Nutch使用 1. 創建種子庫 urls/seed.txt 和數據目錄 data 2. 配置規則 a)設置爬蟲名 conf/nutch-site.xml 加入http.agent.name屬性 b)設置匹配規則 conf/regex-urlfilter.txt 修改+^http://www.ucai.cn/ 3. 開始抓取數據,運行參數 bin/crawl urls data null 2 4. 查詢數據情況、分析、導出 bin/nutch readdb data/crawldb/ -stats ![](https://box.kancloud.cn/2016-05-05_572abe6c7da41.png) ##Solr使用 1. 配置 scheme.xml a)fieldType 定義了如何處理field b)field 索引文件中能提交處理的字段 2. 配置 solrconfig.xml lib配置、依賴jar包和插件、組件配置、索引配置、查詢配置使用: 啟動jetty容器:java -jar start.jar 多core配置 ##集成方法 Nutch爬蟲直接入庫Solr(已經抓取的可以用命令工具bin/nutch index入庫) bin/crawl urls data http://localhost:8983/solr/ucai 1 配置: 1、復制Nutch字段配置到Solr:{nutch_dir}/conf/scheme-solr4.xml到 {solr_dir}/solr/ucai/conf/scheme.xml 2、加入版本字段到最后:<field name="_version_" type="long" indexed="true" stored="true" multiValued="false"/>
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看