期待已久的詞典編譯器終於發布了。從今天開始,我將逐步向大家介紹如何制作詞典數據庫。
制作詞典數據庫至少要有兩個文件:第一個是編譯器所用的配置文件;第二個是詞典的文本內容,即源數據文件。編譯器的配置文件用於告訴程序如何將詞典的文本內容編譯 成詞典數據庫,配置文件是 XML 文件,要按一定的語法撰寫。而源數據文件的結構則是自由的。只要文本數據有一定的規律,都可能可以通過編寫配置文件來編譯成數據庫。
下面,讓我們從最簡單的地方開始,制作一個只有兩個詞條的詞典數據庫。本示例所采用的文件可在此處下載。
源數據文件
首先,使用記事本或其它文本編輯器,編寫一個詞典文本文件(示例1.txt),其內容如下:
一
yi1
最簡單的數字
一鼓作氣
yi1 gu3 zuo4 qi4
一下子完成任務
該文件有七行,其中有兩個詞條(“一”和“一鼓作氣”)。第一行(“一”)是詞條,在詞條下面的兩行是“一”的解釋文本;后續出現的一個空行表示解釋文本結束,再下一行將是新的詞條(“一鼓作氣”),后續的內容則是“一鼓作氣”的解釋。
將上述詞典文本文件保存到硬盤上,命名為“示例1.txt”。
編譯器配置文件
有了源數據文件后,我們可以開始編寫編譯器的配置文件了。
編譯器配置文件是 XML 文件。這是一種使用尖括號標簽標記的文本代碼文件,在W3School網站、IBM網站上均有如何編寫 XML 文檔的概念和入門講解,在此就不再介紹 XML 文檔的知識了。本示例的編譯器配置代碼如下所示。
1 <?xml version="1.0" encoding="gbk"?> 2 <config 3 title="示例1" 4 description="一步步教你生成數據庫" 5 url="http://hanzisearcher.cnblogs.org" 6 author="Dr. Han" 7 version="第一版"> 8 <data file="示例1.txt"> 9 <row field="1"/> 10 </data> 11 </config>
編譯配置文件的根元素中包含了詞典的基本屬性。其中,“title”屬性是詞典在程序檢索結果中出現的名稱,它是必須出現的。其它的內容則是可選的信息,例如“description”表示詞典的簡要描述內容,“url”告訴使用者查看該網址可以獲得更多的信息,“author”表示詞典的制作者或編者,“version”表示詞典的版本信息。
“data”元素出現在根元素之內,表示詞典數據庫的數據來源及內容布局。執行編譯時,程序會讀取“file”屬性所指向的文件,然后按照“data”內各子元素的定義分析源文件,將其轉換為詞典數據庫的條目。之前,我們已經保存源數據文件為“示例1.txt”,因此,在“file”屬性中填入“示例1.txt”。在“data”元素內的“row”子元素,表示“示例1.txt”文件是由一行一行的文本構成的,“field”屬性表示文本對應哪個字段定義。在本示例中,我們沒有定義任何字段,所以,在“field”屬性的值中填“1”。
完成編輯后,將配置文件保存為“示例1.xml”文件。配置文件和源數據文件要處於同一個目錄下,否則需要更改“data”元素的“file”屬性以匹配兩文件的位置關系。
執行編譯
保存了上述兩個文件后,打開程序,在“文件”菜單中選擇“詞典編譯器”命令。
點擊“定義文件”右邊的“加載”按鈕,選擇之前保存的“示例1.xml”文件。
選擇了定義文件之后,在“輸出位置”處將顯示將要生成的詞典數據庫的位置(默認位置為程序安裝目錄下的“database”文件夾。
輸出位置中的輸出文件名默認為配置文件根元素的“title”屬性值。
點擊“編譯”按鈕,程序將按編譯配置文件的配置讀取源數據文件並生成詞典數據庫。結果如下圖所示。
測試詞典
完成編譯后,程序將自動掛接剛剛生成的詞典。在詞典的管理界面可以看到增加了新的詞典,名稱為“示例1”,如下圖所示。
雙擊詞典的名稱,可以查看其摘要信息,如下圖所示。
關閉詞典信息和詞典對話框,在詞典檢索界面輸入“一鼓作氣”,可得到如下檢索結果。
再輸入“一”,可得到如下檢索結果。
恭喜你,第一個詞典數據庫編譯成功了!