• 沒有找到結果。

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

52

第二節 學術期刊資訊搜尋介面

本搜尋引擎針對期刊論文內容(Paper)、期刊論文摘要(Abstract)、期刊論文抬 頭(Paper title)、關鍵字(Keyword)、作者名稱(Author name)、期刊名稱(Periodical title)、

與出版商名稱(Publisher name)等七項標的進行搜尋。各自擁有資料量如下表所示:

資料類型 筆數

Paper content 131,478

Paper title 131,478

Author name 118,642

Periodical title 2,268

Keyword 387,281

Publisher name 3,250

Abstract 131,478

表 2. 搜尋標的資料筆數表

表 2 為七項搜尋標的之資料筆數表,針對 13 萬餘筆台灣學術期刊論文資 料進行檢索,各標的資料間關係如下圖所示:

圖 24. 台灣學術期刊搜尋系統 ERM 圖

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

53

圖 24 中,綠色標號之節點,為與 Paper 具有 R-R 關係之節點;紫色標號之節 點,為與 Periodical 具有 R-R 遞迴關係之節點。為了減少搜尋結果之時間,本研究 期望於存取 Paper Content 實體時,也能同時存取此作者名稱與期刊名稱之資訊,

而不需透過 Join 或者是多次的 Table I/O 存取。因此本研究欲將此三節點進行 R-R 關係之轉換。以下將依第三節所介紹之欄導向資料結構轉換,與 Avro 資料結構轉 換分別作介紹。

第一段 欄導向資料結構轉換

Table 名稱 Table 欄位

Object_title object_id object_title_language object_title

Object object_id

Paper paper_id text_id chapter_id content_id text_language content_text

Abstract chapter_id abstract_language abstract_title

Chapter_title chapter_id chapter_title_language chapter_title

Author_Title object_id author_title_language

Keyword paper_id keyword_title

Publisher_title content_id publisher_language publisher_title

Periodical content_id

Periodical_title content_id periodical_langauge periodical_title

表 3. 關聯式資料庫 Table 欄位表

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

54

圖 25. 欄導向資料結構轉換-Paper

依圖 25 所示之 ERM,Paper 為主要存取之 table,亦即所有搜尋結果將會以 Paper 之內容作為最後呈現。因此根據第三節所闡述之概念先進行一對一與一對多 之轉換:m-n(Author, Paper Content)、1-m(Periodical, Paper Content)、1-m(Keyword, Paper_content)、1-m(Paper Content, Paper Title)、1-m(Author, Author name)、

1-m(Periodical, Periodical Title)。至於 R-R 關係之轉換,本研究依照需求(以 paper 為 主要存取 table)選擇進行 R-R(Paper_Content, Author_name)、R-R(Paper_Content, Periodical Title)以及 R-R(Paper_Content, Publisher_Title)轉換。轉換結果如圖 26 所 示。

而除了 Table Paper 以外之其餘 Table,則依照本研究之需求,保留三個基礎 table,

分別為:(1)Periodical (2) Author 與 (3)Keyword。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

55

圖 26. 欄導向資料結構轉換-Periodical-Keyword-Author

圖 26 為此三基礎 table 之轉換結果。需注意的是,為避免資料量存放過大,

此地只保留 Paper Table 之 id 於此三 table 中,而不進行一對多關係中,除主鍵之 外的多方轉換。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

56

第二段 Avro 序列化結構轉換

上節中闡述了兩種轉換機制,一為欄導向資料結構轉換,另一為 Avro 序列化 資料結構轉換。本研究首先進行欄導向資料結構轉換後,發現效能不佳,後又於 HBase 官方文件中查到,HBase 目前在多個 CF 下的寫入及讀取速度不佳,因此必 須使 CF 的數量維持在很少的數量。目前 HBase 在刷新與壓縮是以 Region 為單位 做操作;也就是說,假如一個 HTable 具有兩個以上的 CF,其中有一個 CF 的資料 量相當大,數筆資料就會被切割分散在不同台的 Regionserver 上;而另一個資料量 較小的 CF也會隨之被切割,分散在不同的機器上,如此一來會造成不必要的 I/O 刷 新。因此如果在掃描資料量較小之 CF,或同時讀取大量小資料量的 CF 時,就會 造成效率不佳的問題產生。因此本研究決定將 CF 與 CQ 數量縮小成各為 1,並採 用 Avro 序列化 Schema 進行資料結構之描述。首先對 Table Paper 進行本身資料的 實體關係轉換。如圖 27 所示,可以得知原先 paper 欄位皆成為 Avro 結構下之一 field。

圖 27. Avro 序列化結構轉換-Paper-1

由於本搜尋引擎之 ERM 並無 1-1 之關係,因此便直接針對一對多,及 R-R 進 行轉換。首先由 Author 與 Paper 開始,進行 m-n(Paper),如圖 28 所示。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

57

圖 28. Avro 序列化結構轉換-Paper-2

接著進行 Author Title 與 Paper 的 R-R 轉換-R-R( Paper, Author_title),由圖 29 可得知 Author 下有 Author Record 物件,以此物件紀錄與 Paper 間的一對多關係;

而 Author Record 下也有一 map field,以此紀錄 Author 與 Author Title 間的一對多 關係。以下各圖為 ERM 轉換至 Avro 序列化資料結構後之 schema 結構。

圖 29. Avro 序列化結構轉換-Paper-3

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

58

圖 30. Avro 序列化結構轉換-Paper-4

圖 31. Avro 序列化結構轉換-Paper-5

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

59

圖 32. Avro 序列化結構轉換-Publisher

圖 32 為另一範例轉換-Publisher。Publisher 如圖 25 所示,與 Journal 之間有 一對多的關係,因此進行 1-m(Journal, Publisher)轉換;又與 Publisher Name 具有一 對多之關係,因此再進行 1-m(Publisher, Publisher Name)轉換。轉換後之 Journal 便 擁有兩 Field,一保存多個作者名稱,另一保留多個期刊間的關係。

本段以兩個轉換圖為基礎,顯示各實體關係、一對一關係、多對多關係以及 遞迴關係。轉換後之 table 便可供搜尋系統進行資料之提取。然而經過轉換後之系 統僅為搜尋時取得相關資料之用,無法針對內容進行搜尋。SQL 資料庫中可以透

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

60

過 SQL-Like 來進行資料比對,但 HBase 中所有存取皆需依賴 RK 的存取以及 Scan,

即使加上 Filter 來進行資料過濾,每次搜尋仍需搜讀全部 table 資料,因此在速度 上是無法符合搜尋引擎之要求的。當然,序列化的資料更是不可能進行搜尋的。

因此,本研究提出了 Index Table 之建立方式:對各搜尋標的之資料進行斷詞,

並將斷詞後之 Term 作為 Index Table 之 RK,供搜尋引擎進行搜尋。

圖 33. N-gram 搜尋目標與搜尋標的 ERM

如圖 33 所示,Index table 之 Schema 設計,是以搜尋目標(Goal)及搜尋目標 (Target)共同組成。以本搜尋引擎而言,搜尋目標即為 paper,而搜尋目標則為本章 節所提出之 7 種搜尋標的。N-gram 搜尋目標與搜尋標的間的關係,為一對多,因 此可根據第三章所描述之轉換規則,將此一對多關係轉換至如圖 34 所示之資料結 構。轉換後之 Schema 設計如圖 34 右方所示。

圖 34. Index Table Schema

本研究針對搜尋目標之內容進行斷詞,採用目前被廣泛使用的 Lucene 斷詞工 具。為了搜尋之精確度,本研究採用 N-gram 斷詞,並以斷詞後之結果作為該搜尋

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

61

目標之 RK,其內容則記錄了該搜尋目標之搜尋標的及出現頻率。圖 34 中紀錄了 N-gram 搜尋目標所對應的多個搜尋標的。為了增加回應速度,此處只儲存搜尋標 的之 RK,而不儲存完整資訊。

因此,本搜尋引擎建立下列 7 張索引 table,以供搜尋之用。

1. Paper_Content_Index 2. Author_Name_Index 3. Paper_Title_Index 4. Publisher_Name_Index 5. Keyword_Title_Index 6. Journal_Title_Index 7. Abstract_Index 第三段 搜尋流程

本搜尋引擎之搜尋流程如圖 35 所示:

圖 35. 搜尋流程示意圖

本搜尋引擎會將搜尋文字進行 N-gram 斷詞,並將斷詞後所得到的 Term,列

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

62

入該搜尋目標之索引表,提供查詢。最後將搜尋結果以符合的字元數量(N)來進行 排序,使用者可以依照需求指定符合之字數。搜尋畫面如下圖所示:

圖 36. 台灣學術期刊搜尋引擎搜尋畫面

圖 37. 搜尋論文全文內容結果

由圖 37 可見,搜尋速度由 6 秒降低至 1-2 秒以內,可見雲端分散式搜尋引擎 有效地提升搜尋的效能。

分為 Query 及 Upload 兩種型態。如為 Query 則毋須提供上傳物件(Upload Object) 參數。

相關文件