1. 程式人生 > >Lucene筆記36-Lucene運用到專案中-需求分析

Lucene筆記36-Lucene運用到專案中-需求分析

一、需求分析

索引的目標

現在需要設計一個留言管理系統,我們需要對哪些欄位建立索引呢?

  1. 留言的內容
  2. 留言的標題
  3. 留言的附件

索引的物件

索引的物件,要存放什麼屬性呢?

  1. messageId
  2. title
  3. summary
  4. createDate
  5. content:這裡的content存放了文字內容或者附件內容

既然上面說到content既可以存放文字內容,又可以存放附件內容,那麼文字內容id和附件內容id就有可能衝突,怎麼解決這個衝突呢?這裡的附件id就不要使用int來儲存,而是使用String來儲存,因為,我們可以規定x_y的形式,如果存放的是文字,那麼x_y代表文字,其中x為0,y為文字id,如果存放的是附件,其中x代表文字id,y代表x下的附件id,這就巧妙的將id衝突問題解決了,而且還非常巧妙的綁定了文字和附件的關係。

搜尋的業務需求

是否做實時搜尋(只能做到近實時搜尋)?什麼時候更新索引?

完全實時搜尋:只要資料庫一變動,立刻執行indexWriter的commit()方法更新索引資料,不過這樣的做法效能非常的低。

近實時搜尋:當用戶做了修改之後,先將索引儲存到記憶體當中,在一個統一的時間,對記憶體中的所有索引進行統一的提交操作。