SlideShare a Scribd company logo
1 of 62
全文搜尋引擎的
進階實作與應用
聖藍科技
執行長
王建興
講者簡介
• 現職
– 聖藍科技執行長
• 興趣
– 網路應用系統開發
• 譯作
– Thinking in Java 4th Edition, 正體中文版
– Thinking in Java 2nd Edition, 正體中文版
– Essential C++, 正體中文版
• 專欄
– iThome 電腦報程式人專欄
• 連絡方式
– qing.chwang at gmail.com
概要
• 前情提要
• Lucene 的相關技術
• 基於搜尋引擎的進階應用
• 文字探勘應用的實作
• 結論
前情提要
• “JAVA 的開放原碼全文搜尋技術- LUCENE” -
2004 年 Java2 專業技術大會
– 全文搜尋引擎的基本概念
– Lucene 的簡介與程式設計
• “「沙中撈金術」﹣談開放原始碼的推薦系
統” - 2012 年 Java2 專業技術大會
– 推薦系統觀念
– 利用 Mahout 實作推薦系統
搜尋引擎的相關技術及應用
• Web Crawler
– 漫爬網頁、取得網頁內容
• 文件格式及語系處理
– 各種格式檔案中語言的偵測及文字的擷取
• 進階搜尋及檢索功能
• 提高服務的規模(例:分散式化)
– 資料量
– 計算量
• 自然語言處理
• 文字探勘(Text Mining)技術
Lucene 的相關技術
• Solr
• Tika
• Nutch
• OpenNLP
• Mahout
Solr
• Solr 是基於 Lucene 的平台,提供了
– 進階的全文搜尋功能
– 搜尋結果標示(Highlighting)
– 分面搜尋(Faceted Search)
– 近乎即時的索引速度
– 標準化的介面(XML, JSON, HTTP)
– 分散式搜尋的能力
Tika
• Tika是個內容分析的工具組,主要提供了
– 內容的偵測(Detector)
• 檔案格式偵測
• 文字語言偵測
– 內容的剖析(Parser)
• Tika 支援格式
– HTML, XML, Office, OpenDocument, PDF, epub, …
Nutch
• Nutch 是個可擴充功能且具規模可擴充性的
Web Crawler
– 基於 Plugin,高度模組化
– 多協定、多執行緒、分散式
– 具規模擴充性的資料處理框架(Hadoop
MapReduce)
– 基於 Lucene 或 Solr 的全文搜尋引擎
漫爬於網頁間
*”Nutch as a Web data mining platform” – abial@slideshare
網頁搜尋引擎組件
*”Nutch as a Web data mining platform” – abial@slideshare
OpenNLP
• NLP 即自然語言處理( Natural Language
Processing)
• OpenNLP 是 Apache 的自然語言處理程式庫
– 句子偵測(Sentence Detector)
– Tokenizer
– 名稱尋找器(Name Finder)
– 文件分類器(Document Categorizer)
– 詞性偵測(Part of Speech)
– ..
基於搜尋引擎的進階應用
• 搜尋引擎為了提供全文搜尋的功能,建立
了文件索引等相關資料
• 現代的搜尋引擎所提供的不只是找出相符
的文件
• 基於文件的索引資料可以開發進階的有趣
應用
進階的搜尋引擎功能實作
• 同音字搜尋
• 同義字搜尋
• 簡繁查詢
基於搜尋引擎的進階應用
• 以文找文
• 關聯詞分析
• 關鍵詞分析
• 文件分類
• 文件群集
在 Lucene 上建多份索引
• 同一份文件進到系統時,可以為它建立多
份索引
• 為什麼需要多份索引?
• 基於不同用途的索引
– bi-gram, tri-gram, n-gram 索引
– 詞庫索引
– 發音索引
– 同義詞索引
做同音字搜尋
• 文件建立索引時,除其餘所需索引外,也
建立同音字查詢時所需的發音索引
• 以中文而言,建立索引時,可取得文件中
每個字的注音符號並建立文件注音符號索
引
• 查詢時,將查詢條件轉換成為注音符號,
針對發音索引做查詢
中文同音字例
• 建立每個中文字的注音對照表
– 載入至 in memory 的 Hash Table 是個簡單的實
作方式
• 建索引時,查表將每個中文字轉換成為注
音
– 黄非紅 -> ㄏㄨㄤˊㄈㄟㄏㄨㄥˊ
• 查詢時一樣查表將查詢字轉換成為注音
– 黄飛鴻-> ㄏㄨㄤˊㄈㄟㄏㄨㄥˊ
• 查詢 “黄飛鴻” 時可同時查出 “黄飛鴻” 及 “
黄非紅”
做同義詞查詢
• 需透過某種方式建立同義詞對應表
– 例如人工維護
– 軟體 -> 軟件
• 建立同義詞索引,提供同義詞查詢
• 簡繁查詢的原理類似
– 可一律建成繁體索引
– 查詢時轉成繁體查詢
詞庫索引
• 何謂 bi-gram, tri-gram, … , n-gram?
• Bi-gram, tri-gram, … , n-gram 的優點
– 不需要倚靠事先建好的詞庫
• 缺點
– 使索引變大降低搜尋效率
– 搜尋出非目標的結果
• 詞庫索引可以視是一種縮小索引內容及範圍的方
式
– 更精準
– 但需要事先建立
Lucene 中內建的中文斷詞器
• ChineseTokenizer
– 將 “我是台灣人” 斷成 “我” “是” “台” “灣” “人”
• CJKTokenizer
– 將 “我是台灣人” 斷成 “我是” “是台” “台灣” “灣
人”
• SmartChineseAnalyzer
– 將 “我是台灣人” 斷成 “我” “是” “台灣” “人”
其他的中文斷詞器
• Paoding(庖丁解牛)
• Imdict-Chinese-Analyzer:imdict 智慧型詞典
所用的智慧型中文斷詞器
• IKAnalyzer
• Mmseg4j: 利用蔡志浩教授的 MMSeg 演算法
開發出來的詞斷器
文字探勘(Text Mining)
• 文字探勘意指從文字資訊中發掘出有用資
訊的程序
• Data Mining vs. Text Mining
– Data Mining 假設處理的資料為具結構的資料
– Text Mining 的資源輸入為自然語言型式的文件
資料
• Text Mining 可先將自然語言型式的文件資料
轉換成為具結構的資料,再套用 Data
Mining 方法處理
生活中到處都是文字應用
• 部落格文章
• 社交網站的近況更新
– Facebook
– Twitter
• YouTube 影片的文字描述
• 歌曲的專輯、歌手、曲名
• 購物網站上的商品名稱、文字描述
• …
文字探勘的應用例子
• 部落格/新聞/文章
– 相似的部落格/新聞/文章
– 相關的部落格/新聞/文章(See Also)
– 某個使用者可能會感興趣的部落格/新聞/文章
– 部落格/新聞/文章自動分類(應用:適合投放的廣
告)
• Facebook/Twitter 近況更新
– 流行主題分析
– 口碑分析
– 使用者偏好分析
– 廣告投放
– 推薦興趣相同的使用者
– 推薦投其所好的社團
新聞網站應用文字探勘
*http://http://times.hinet.net/
以搜尋引擎為基礎如何協助探勘文字
• 文字探勘的首要工作為將自然語言型式的文件轉
成結構化的資訊
• 轉換成為結構化的資訊後,即可運用資料探勘的
技術處理
• 搜尋引擎在建立索引的同時,即在將自然語言型
式的文件轉成結構化的資訊
文件的相似性
• 文件的相似性是許多基於搜尋引擎的進階
應用的基礎
– 搜尋引擎的主要功能即尋找與查詢字串相似的
文件
• 如何判斷文件的相似性?
– 將文字內容轉換成為可以數學處理的型式,即
向量
– 利用向量的相似度來判斷文件的相似性
Vector Space Model (1/2)
• 每份文件中所含的詞,都是一個特徵
• 將每份文件轉成所有詞所構成之向量空間
中的向量
• 將文件轉換成為向量後即可處理文件的相
似度
Vector Space Model (2/2)
• 將文件表示為 n 維的向量
– n 即所有文字中的所有可能詞
– 若一文件被表示為向量 V,其中的第 i 個元素之
為 v(i) ,其值為詞 wi 的權重
– 詞 wi 的權重可以有不同的表示,例如
• 詞 wi 的出現次數
• 詞 wi 的 TF-IDF 值
向量相似度
TF-IDF
• Term Frequency – Inverse Document Frequency
• TF
– 詞在文件中出現的頻率
– 衡量特定詞在單一文件中的重要性
• IDF
– log( 總文件數/ (t 這個詞出現的文件總數) )
– 衡量特定詞所含的資訊重要程度
Term Frequency Vector
• 利用 Lucene 建立索引,可取得文件的
“Term Vector”
• 所謂的 “Term Vector” 即將文件轉為向量空
間中的向量形式
取得 TF, IDF 資訊的初始動作
*http://filotechnologia.blogspot.tw/2013/11/get-tf-and-idf-of-all-terms-of-index.html
• 開啟 IndexReader
• 建立 TFIDFSimilarity 類別的 instance
取得 IDF
已可取得 TF-IDF 向量
下一步?
Apache Mahout
• Apache Mahout™ 是個具規模可擴充性的機器學習
(machine learning)程式庫
• Mahout在Apache Hadoop ™ 上,使用了
map/reduce的演算法,實作了 clustering,
classification, 以及 collaborative filtering的核心演算
法
• 除了跑在分散式/雲端多節點的Hadoop平台上之外
,其中也提了單一節點以及非Hadoop的實作版本
• 其核心程式庫即使是非分散式的版本,也都經高
度最佳化因而能提供極佳的效能
Mahout 提供的諸般演算法
• 推薦引擎
– 指協同過濾式(Collaborative Filtering)推薦
• 分類演算法
– Bayesian, Support Vector Machine (SVM), Neural Network,
Hidden Markov Models, …
• 群集演算法
– K-Means, Fuzzy K-Means, Hierarchical Clustering, …
• Pattern Mining
– 頻繁項目集(Frequent Itemset)演算法
• Regression
• Dimension Reduction
– Singular Value Decomposition and other Dimension Reduction Techniques
• Vector Similarity
透過 Lucene 取得文件的 TF-IDF 向量後
利用 Mahout 中所提供
的程式庫做計算及應用
如何計算相似度
• Mahout 中提供了計算向量相似度的程式
– Cosine Similarity
– Pearson Correlation Similarity
– Euclidian Distance Similarity
– Tanimoto Coefficient Similarity
– Log Likelyhood Similarity
文件的自動分類 (1/2)
• 利用現有的文件分類結果,將未知類型的
新文件自動分類
– 新聞的自動分類(政治、財經、運動、娛樂)
– 網頁的自動分類(3C, 美妝, 政治, 電玩, … )
• 自動分類屬於監督式(supervised)學習
文件的自動分類(2/2)
• 取得文件的向量表示式後,可套用典型的
分類演算法來做文件的分類
• Mahout 提供了各種分類演算法
– Stochastic Gradient Decent
– Support Vector Machine
– Naïve Bayes
– Complementary Naïve Bayes
– Random Forrest
– …
文件自動分群(1/2)
• 基於文件的特性,自動的將相關的文件集
結成群,並且找出該群文件的共通特性
– 共通特性像是共同的關鍵字
• 自動分群可以是非監督式(non-supervised)
學習
文件自動分群(2/2)
• 取得文件的 Vector 後,將 vector 套入
Mahout 的自動分群演算法,即可達到文件
的自動分群
– K-Means
– Fuzzy K-Means
– Meanshift
– Centroid Generation
– Direchlet Clustering
文件自動分群
*http://www.ediscoverydaily.com/2011/11/ediscovery-best-practices-cluster-documents-for-more-effective-review.html
關聯詞分析 (1/2)
• 關聯詞代表相關性高的字詞,出現詞 A 時,
有很高的機會出現詞 B,則說 A 與 B 為關聯
詞
• 關聯詞的分析有助於我們從大量文件中發
掘出概念的關聯性
關聯詞分析 (2/2)
• 關聯詞即共同出現機率高的詞
• 利用 Item-based 的 CF 方法可分析關聯詞
• 先取得文件的 Term Vector,再運用 Mahout
的 ItemBasedRecommender 即可進行分析
關鍵詞及文字屬性
• 一篇文章中的關鍵詞
– 基本上是其中 TF-IDF 分數較高者
• 為使用者或商品標示關鍵詞
– 使用者瀏覽或按讚某文章,則該文章的關鍵詞
有可能是該使用者的偏好
– 文字是一個偏好的不錯的表示方式
– 點看商品細節、加入購物車、結帳 ... 都可從商
品的文字關鍵詞中推論使用者的偏好
使用者的偏好文字
• 依使用者偏好的文字特性可做
– 使用者的自動分群
– 使用者的自動分類
• 使用者偏好可做許多應用
– 相似的使用者(朋友推薦)
– 會感興趣的商品(使用者偏好文字和商品文字
相似)
– 廣告投放(使用者偏好文字和正在瀏覽的網頁
文字相似)
處理海量的文件
• 在過去,要做文字探勘的應用,得自行開
發許多程式
– 轉換成向量(現在有 Lucene 了)
– 資料探勘的演算法實作(現在有 Mahout 了)
• 而在這 Big Data 的時代,還可能要處理海量
的文件資料
– 幸好,Mahout 基於 Hadoop 的 map-reduce 提供
了好的規模可擴充性
更幸運的是 …
Mahout 內建支援
Lucene 的整合
將 Lucene 索引轉換成 Mahout 向量
• Mahout 內建支援將 Lucene & Solr 索引轉換成為
Mahout 標準向量格式的工具程式
• $MAHOUT_HOME/bin/mahout lucene.vector
--dir $WORK_DIR/wikipedia/solr/data/index
--field body
--dictOut $WORK_DIR/solr/wikipedia/dict.txt
--output $WORK_DIR/solr/wikipedia/out.txt
• 除了 Lucene 索引外,Mahout 也支援將文件轉換
成為 SequenceFile 格式,再將 SequenceFile 格式檔
案轉換成為向量
Mahout 對文字資料的支援
• 將文件資料轉換為向量時,可套用 TF-IDF
• 可自訂斷詞器
• Mahout 也允許你撰寫程式呼叫 API 來處理
文件資料
有了 Mahout 向量之外
• 即可套用 Mahout 現成的演算方法來處理向
量
– 文件群集
– 文件分類
– …
• 基於 Hadoop,可擴展處理更規模的文件資
料量
結語
• 搜尋引擎所建立的資料,不僅可供搜尋文
件之用,還可提供更多進階的應用可能
• 過去,要處理文字的 mining 需要許多輪子
• 如今,輪子都有了
– Lucene 的相關技術及平台
• 而且,還上了雲端
– 更容易處理規模可擴充性的問題
資源
• Solr
– lucene.apache.org/solr
• Nutch
– nutch.apache.org
• Tika
– tika.apache.org
• OpenNLP
– opennlp.apache.org
• Mahout
– mahout.apache.org
謝謝

More Related Content

What's hot

ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索Will Huang
 
Sql server performance tuning
Sql server performance tuningSql server performance tuning
Sql server performance tuningngupt28
 
Document control, clearing, special gl, taxes SAP Fi
Document control, clearing, special gl, taxes SAP FiDocument control, clearing, special gl, taxes SAP Fi
Document control, clearing, special gl, taxes SAP FiLav Kumar
 
A complete guide to azure storage
A complete guide to azure storageA complete guide to azure storage
A complete guide to azure storageHimanshu Sahu
 
SAP Contabilidad
SAP ContabilidadSAP Contabilidad
SAP Contabilidadcoviso
 
Migrating and Running DBs on Amazon RDS for Oracle
Migrating and Running DBs on Amazon RDS for OracleMigrating and Running DBs on Amazon RDS for Oracle
Migrating and Running DBs on Amazon RDS for OracleMaris Elsins
 
Configure and customize automatic credit management
Configure and customize automatic credit managementConfigure and customize automatic credit management
Configure and customize automatic credit managementAndrea Graziani
 
Sap mm-A glance for Trainer
Sap mm-A glance for TrainerSap mm-A glance for Trainer
Sap mm-A glance for TrainerAvi Hiremath
 
Monitor and manage everything Cisco using OpManager
Monitor and manage everything Cisco using OpManagerMonitor and manage everything Cisco using OpManager
Monitor and manage everything Cisco using OpManagerManageEngine
 
KEEP BUFFER 활용 방안_Wh oracle
KEEP BUFFER 활용 방안_Wh oracleKEEP BUFFER 활용 방안_Wh oracle
KEEP BUFFER 활용 방안_Wh oracle엑셈
 
SharePoint Disaster Recovery with SQL AlwaysOn
SharePoint Disaster Recovery with SQL AlwaysOnSharePoint Disaster Recovery with SQL AlwaysOn
SharePoint Disaster Recovery with SQL AlwaysOnZeddy Iskandar
 
SAP FICO Training Material PPT
 SAP FICO Training Material PPT SAP FICO Training Material PPT
SAP FICO Training Material PPTSusan Robinson
 
Dynamic Content Acceleration: Fast Web Apps with Amazon CloudFront and Amazon...
Dynamic Content Acceleration: Fast Web Apps with Amazon CloudFront and Amazon...Dynamic Content Acceleration: Fast Web Apps with Amazon CloudFront and Amazon...
Dynamic Content Acceleration: Fast Web Apps with Amazon CloudFront and Amazon...Amazon Web Services
 
PostgreSQL and Linux Containers
PostgreSQL and Linux ContainersPostgreSQL and Linux Containers
PostgreSQL and Linux ContainersJignesh Shah
 

What's hot (20)

ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索
 
Oracle Identity Manager Basics
Oracle Identity Manager BasicsOracle Identity Manager Basics
Oracle Identity Manager Basics
 
Tomcat Server
Tomcat ServerTomcat Server
Tomcat Server
 
Oracle DBA
Oracle DBAOracle DBA
Oracle DBA
 
Sql server performance tuning
Sql server performance tuningSql server performance tuning
Sql server performance tuning
 
Document control, clearing, special gl, taxes SAP Fi
Document control, clearing, special gl, taxes SAP FiDocument control, clearing, special gl, taxes SAP Fi
Document control, clearing, special gl, taxes SAP Fi
 
A complete guide to azure storage
A complete guide to azure storageA complete guide to azure storage
A complete guide to azure storage
 
SAP Contabilidad
SAP ContabilidadSAP Contabilidad
SAP Contabilidad
 
Migrating and Running DBs on Amazon RDS for Oracle
Migrating and Running DBs on Amazon RDS for OracleMigrating and Running DBs on Amazon RDS for Oracle
Migrating and Running DBs on Amazon RDS for Oracle
 
Sap treasury and risk management
Sap treasury and risk managementSap treasury and risk management
Sap treasury and risk management
 
Configure and customize automatic credit management
Configure and customize automatic credit managementConfigure and customize automatic credit management
Configure and customize automatic credit management
 
VCP Workshop
VCP WorkshopVCP Workshop
VCP Workshop
 
Sap mm-A glance for Trainer
Sap mm-A glance for TrainerSap mm-A glance for Trainer
Sap mm-A glance for Trainer
 
Monitor and manage everything Cisco using OpManager
Monitor and manage everything Cisco using OpManagerMonitor and manage everything Cisco using OpManager
Monitor and manage everything Cisco using OpManager
 
KEEP BUFFER 활용 방안_Wh oracle
KEEP BUFFER 활용 방안_Wh oracleKEEP BUFFER 활용 방안_Wh oracle
KEEP BUFFER 활용 방안_Wh oracle
 
SharePoint Disaster Recovery with SQL AlwaysOn
SharePoint Disaster Recovery with SQL AlwaysOnSharePoint Disaster Recovery with SQL AlwaysOn
SharePoint Disaster Recovery with SQL AlwaysOn
 
Cbt sd
Cbt sdCbt sd
Cbt sd
 
SAP FICO Training Material PPT
 SAP FICO Training Material PPT SAP FICO Training Material PPT
SAP FICO Training Material PPT
 
Dynamic Content Acceleration: Fast Web Apps with Amazon CloudFront and Amazon...
Dynamic Content Acceleration: Fast Web Apps with Amazon CloudFront and Amazon...Dynamic Content Acceleration: Fast Web Apps with Amazon CloudFront and Amazon...
Dynamic Content Acceleration: Fast Web Apps with Amazon CloudFront and Amazon...
 
PostgreSQL and Linux Containers
PostgreSQL and Linux ContainersPostgreSQL and Linux Containers
PostgreSQL and Linux Containers
 

Viewers also liked

從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby建興 王
 
Spock:願你的測試長長久久、生生不息
Spock:願你的測試長長久久、生生不息Spock:願你的測試長長久久、生生不息
Spock:願你的測試長長久久、生生不息Shihpeng Lin
 
認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算建興 王
 
在雲端上啜飲爪哇
在雲端上啜飲爪哇在雲端上啜飲爪哇
在雲端上啜飲爪哇建興 王
 
排隊應用開發
排隊應用開發排隊應用開發
排隊應用開發建興 王
 
「沙中撈金術」﹣談開放原始碼的推薦系統
「沙中撈金術」﹣談開放原始碼的推薦系統 「沙中撈金術」﹣談開放原始碼的推薦系統
「沙中撈金術」﹣談開放原始碼的推薦系統 建興 王
 
Mahout資料分析基礎入門
Mahout資料分析基礎入門Mahout資料分析基礎入門
Mahout資料分析基礎入門Jhang Raymond
 
淺談 Java GC 原理、調教和 新發展
淺談 Java GC 原理、調教和新發展淺談 Java GC 原理、調教和新發展
淺談 Java GC 原理、調教和 新發展Leon Chen
 
JavaScript Frameworks and Java EE – A Great Match
JavaScript Frameworks and Java EE – A Great MatchJavaScript Frameworks and Java EE – A Great Match
JavaScript Frameworks and Java EE – A Great MatchReza Rahman
 
開放原始碼的回收與再利用
開放原始碼的回收與再利用開放原始碼的回收與再利用
開放原始碼的回收與再利用建興 王
 
開發實用創新的 Android 應用程式
開發實用創新的 Android 應用程式開發實用創新的 Android 應用程式
開發實用創新的 Android 應用程式建興 王
 
lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫建興 王
 
IKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 JavaIKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 Java建興 王
 
Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發建興 王
 
淺談JavaFX 遊戲程式
淺談JavaFX 遊戲程式淺談JavaFX 遊戲程式
淺談JavaFX 遊戲程式CodeData
 
Introduction to C++ over CLI
Introduction to C++ over CLIIntroduction to C++ over CLI
Introduction to C++ over CLI建興 王
 
淺談 Groovy 與 AWS 雲端應用開發整合
淺談 Groovy 與 AWS 雲端應用開發整合淺談 Groovy 與 AWS 雲端應用開發整合
淺談 Groovy 與 AWS 雲端應用開發整合Kyle Lin
 
Java 的開放原碼全文搜尋技術 - Lucene
Java 的開放原碼全文搜尋技術 - LuceneJava 的開放原碼全文搜尋技術 - Lucene
Java 的開放原碼全文搜尋技術 - Lucene建興 王
 
Introduction to Apache Mahout
Introduction to Apache MahoutIntroduction to Apache Mahout
Introduction to Apache MahoutEdureka!
 
如何用JDK8實作一個小型的關聯式資料庫系統
如何用JDK8實作一個小型的關聯式資料庫系統如何用JDK8實作一個小型的關聯式資料庫系統
如何用JDK8實作一個小型的關聯式資料庫系統なおき きしだ
 

Viewers also liked (20)

從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby
 
Spock:願你的測試長長久久、生生不息
Spock:願你的測試長長久久、生生不息Spock:願你的測試長長久久、生生不息
Spock:願你的測試長長久久、生生不息
 
認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算
 
在雲端上啜飲爪哇
在雲端上啜飲爪哇在雲端上啜飲爪哇
在雲端上啜飲爪哇
 
排隊應用開發
排隊應用開發排隊應用開發
排隊應用開發
 
「沙中撈金術」﹣談開放原始碼的推薦系統
「沙中撈金術」﹣談開放原始碼的推薦系統 「沙中撈金術」﹣談開放原始碼的推薦系統
「沙中撈金術」﹣談開放原始碼的推薦系統
 
Mahout資料分析基礎入門
Mahout資料分析基礎入門Mahout資料分析基礎入門
Mahout資料分析基礎入門
 
淺談 Java GC 原理、調教和 新發展
淺談 Java GC 原理、調教和新發展淺談 Java GC 原理、調教和新發展
淺談 Java GC 原理、調教和 新發展
 
JavaScript Frameworks and Java EE – A Great Match
JavaScript Frameworks and Java EE – A Great MatchJavaScript Frameworks and Java EE – A Great Match
JavaScript Frameworks and Java EE – A Great Match
 
開放原始碼的回收與再利用
開放原始碼的回收與再利用開放原始碼的回收與再利用
開放原始碼的回收與再利用
 
開發實用創新的 Android 應用程式
開發實用創新的 Android 應用程式開發實用創新的 Android 應用程式
開發實用創新的 Android 應用程式
 
lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫
 
IKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 JavaIKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 Java
 
Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發
 
淺談JavaFX 遊戲程式
淺談JavaFX 遊戲程式淺談JavaFX 遊戲程式
淺談JavaFX 遊戲程式
 
Introduction to C++ over CLI
Introduction to C++ over CLIIntroduction to C++ over CLI
Introduction to C++ over CLI
 
淺談 Groovy 與 AWS 雲端應用開發整合
淺談 Groovy 與 AWS 雲端應用開發整合淺談 Groovy 與 AWS 雲端應用開發整合
淺談 Groovy 與 AWS 雲端應用開發整合
 
Java 的開放原碼全文搜尋技術 - Lucene
Java 的開放原碼全文搜尋技術 - LuceneJava 的開放原碼全文搜尋技術 - Lucene
Java 的開放原碼全文搜尋技術 - Lucene
 
Introduction to Apache Mahout
Introduction to Apache MahoutIntroduction to Apache Mahout
Introduction to Apache Mahout
 
如何用JDK8實作一個小型的關聯式資料庫系統
如何用JDK8實作一個小型的關聯式資料庫系統如何用JDK8實作一個小型的關聯式資料庫系統
如何用JDK8實作一個小型的關聯式資料庫系統
 

Similar to 全文搜尋引擎的進階實作與應用

搜索技术分享
搜索技术分享搜索技术分享
搜索技术分享endless_yy
 
Elastic stack day-1
Elastic stack day-1Elastic stack day-1
Elastic stack day-1YI-CHING WU
 
1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计RolfZhang
 
Javascript进阶编程
Javascript进阶编程Javascript进阶编程
Javascript进阶编程iflytek
 
elastic search分析与实践
elastic search分析与实践elastic search分析与实践
elastic search分析与实践williams2014
 
網路2.0時代情報蒐集術
網路2.0時代情報蒐集術網路2.0時代情報蒐集術
網路2.0時代情報蒐集術基欽 劉
 
網站規劃
網站規劃網站規劃
網站規劃jiannrong
 
快速生成FAQ Bot - 使用Azure Language Service LanguageService-03-FAQbot (微軟)(鐘祥仁)(20...
快速生成FAQ Bot - 使用Azure Language Service LanguageService-03-FAQbot (微軟)(鐘祥仁)(20...快速生成FAQ Bot - 使用Azure Language Service LanguageService-03-FAQbot (微軟)(鐘祥仁)(20...
快速生成FAQ Bot - 使用Azure Language Service LanguageService-03-FAQbot (微軟)(鐘祥仁)(20...AllenLi78
 
Elastic search
Elastic searchElastic search
Elastic searchSamchu Li
 
ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1medcl
 
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林imShining @DevCamp
 
A brief introduction to Machine Learning
A brief introduction to Machine LearningA brief introduction to Machine Learning
A brief introduction to Machine LearningWen-Tien Chang
 
第九章千年之際展望語料庫語言學 佩娟15
第九章千年之際展望語料庫語言學 佩娟15第九章千年之際展望語料庫語言學 佩娟15
第九章千年之際展望語料庫語言學 佩娟15ungian iunn
 
王鹏云:实时搜索架构分析
王鹏云:实时搜索架构分析王鹏云:实时搜索架构分析
王鹏云:实时搜索架构分析Leechael
 
Tup2王鹏云:实时搜索架构分析
Tup2王鹏云:实时搜索架构分析Tup2王鹏云:实时搜索架构分析
Tup2王鹏云:实时搜索架构分析yongboy
 
如何,高效利用搜索引擎+构建网络工具箱
如何,高效利用搜索引擎+构建网络工具箱如何,高效利用搜索引擎+构建网络工具箱
如何,高效利用搜索引擎+构建网络工具箱84zhu
 
2016.8.1 Design Pattern Eric
2016.8.1 Design Pattern Eric2016.8.1 Design Pattern Eric
2016.8.1 Design Pattern Eric柏亨 盧
 
選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅Shengyou Fan
 
Jira live demo 2017
Jira live demo 2017Jira live demo 2017
Jira live demo 2017Linktech
 

Similar to 全文搜尋引擎的進階實作與應用 (20)

搜索技术分享
搜索技术分享搜索技术分享
搜索技术分享
 
Elastic stack day-1
Elastic stack day-1Elastic stack day-1
Elastic stack day-1
 
1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计
 
Javascript进阶编程
Javascript进阶编程Javascript进阶编程
Javascript进阶编程
 
Lucene实践
Lucene实践Lucene实践
Lucene实践
 
elastic search分析与实践
elastic search分析与实践elastic search分析与实践
elastic search分析与实践
 
網路2.0時代情報蒐集術
網路2.0時代情報蒐集術網路2.0時代情報蒐集術
網路2.0時代情報蒐集術
 
網站規劃
網站規劃網站規劃
網站規劃
 
快速生成FAQ Bot - 使用Azure Language Service LanguageService-03-FAQbot (微軟)(鐘祥仁)(20...
快速生成FAQ Bot - 使用Azure Language Service LanguageService-03-FAQbot (微軟)(鐘祥仁)(20...快速生成FAQ Bot - 使用Azure Language Service LanguageService-03-FAQbot (微軟)(鐘祥仁)(20...
快速生成FAQ Bot - 使用Azure Language Service LanguageService-03-FAQbot (微軟)(鐘祥仁)(20...
 
Elastic search
Elastic searchElastic search
Elastic search
 
ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1
 
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
 
A brief introduction to Machine Learning
A brief introduction to Machine LearningA brief introduction to Machine Learning
A brief introduction to Machine Learning
 
第九章千年之際展望語料庫語言學 佩娟15
第九章千年之際展望語料庫語言學 佩娟15第九章千年之際展望語料庫語言學 佩娟15
第九章千年之際展望語料庫語言學 佩娟15
 
王鹏云:实时搜索架构分析
王鹏云:实时搜索架构分析王鹏云:实时搜索架构分析
王鹏云:实时搜索架构分析
 
Tup2王鹏云:实时搜索架构分析
Tup2王鹏云:实时搜索架构分析Tup2王鹏云:实时搜索架构分析
Tup2王鹏云:实时搜索架构分析
 
如何,高效利用搜索引擎+构建网络工具箱
如何,高效利用搜索引擎+构建网络工具箱如何,高效利用搜索引擎+构建网络工具箱
如何,高效利用搜索引擎+构建网络工具箱
 
2016.8.1 Design Pattern Eric
2016.8.1 Design Pattern Eric2016.8.1 Design Pattern Eric
2016.8.1 Design Pattern Eric
 
選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅
 
Jira live demo 2017
Jira live demo 2017Jira live demo 2017
Jira live demo 2017
 

全文搜尋引擎的進階實作與應用