apache lucene-建立自己的搜尋引擎-查詢資料

搜尋引擎最重要的功能就是查詢資料了,當建立好索引檔後,就可以針對索引檔內容進行查詢,索引資料可分為有做分詞及未做分詞,未做分詞的索引資料,只有全部內容均相同才會找到此筆資料,有做分詞者,則依分詞類型,可能有單字索引,雙字索引或中文字詞索引等,索引做的越好,搜尋到的資料會越精準。

資料Field也分成儲存及不存儲二種,當選擇儲存Store.YES時,查詢到此筆資料時則可以直接取用,不過此方法會佔用較多的空間,不存儲方法Store.NO則相反。

索引資料內容如下:

apache lucene

Read More

apache lucene-建立自己的搜尋引擎-索引檔

apachelucene是一套opensource的Search-Engine,搜尋效果比直接使用資料庫條件like還要來的好,而且也不會佔用到資料庫的資源,只需要使用到硬碟的IO,所以可以把搜尋引擎另外做到另一個硬碟,或是放到另一台主機上,單獨成搜尋引擎Server,設計成Multi-Tires架構。

在使用apache lucene時,需要先把資料建立成索引檔,搜尋時則直接取用索引資料,來加快查詢的速度,不同類型的資料可以依需求建立成不同的搜尋索引檔,以下範例是如何建立一組索引檔。

索引檔內容如下圖:

Read More

jsp檔案上傳並利用Ajax製作ProgressBar監控上傳進度

之前寫過一個jsp的檔案上傳,把檔案上傳的動作製成一個class。而現在要提供的這個範例就比較亂一點了,重點會在增加監控的ProgressListener及Ajax取得上傳進度之資料。

程式需要一個bean放入session裡,專門來存放目前上傳的bytes數及其它資訊,選擇好檔案按下上傳時,會開始上傳動作(使用iframe),並啟動Ajax與Server要求目前上傳進度狀況,把資訊顯示在browser上。

FileUpload2.jpg

Read More

Java亂數抽籤程式

在很多場合都會用到抽籤功能,傳統的有用竹筷子上面寫數字放入籤筒裡來取得,還有用紙張寫數字折起來來取出需求數字,不過這些方法都可能會有人為的干擾,最好的方式還是交由程式來取得亂數,當做抽籤結果,以求公平。

這個範例是利用Java亂數來製作的一個抽籤程式,可以選擇是否取數時可允許重覆的數值取得。畫面如下:

RndApp1.jpg

程式碼如下:

Read More

HttpURLConnection來實作檔案或圖片下載

這個範例與之前的HttpURLConnection來實作get及post動作基本原理是一樣的,一個是使用java.io.BufferedReader來取得文字的html內容,而這個範例則是使用java.io.InputStream取得binary的檔案內容。

程式的流程大概是,先建立HttpConnection,給Connection標題Header、Referer、Cookie等內容,然後建立連線,跟伺服器request要求內容,再取得http的InputStrem,要取得伺服器response的內容,把內容讀取byte[],然後寫入檔案,如此就完成下載檔案的動作了。

Read More