我想索引使用Lucene的數據庫中的表。我只使用Lucene索引,字段不存儲。上面提到的表格有五列(用戶標識符(ID),描述,報告編號,報告類型,報告)。Lucene索引和搜索
我打算使用userid,reportnumber和report類型的組合來從數據庫中獲取數據,如果Lucene發現命中的話。
表中的一條記錄可以跨越多行,例如,
JQ123,SOMEDESCRIPTION,1,FIN,鰭報告的內容
JQ123,AnotherDescription,2,MATH,數學報告的內容
JQ123,YetAnotherDesc,3,MATH,另一數學報告的內容
JD456,MoreDesc ,1,STAT,統計報告內容..等等
某些報告類型如(MATH)具有高度結構化的內容(XML,作爲字符串存儲在最後一列中),並且在將來我可能想要充實一些內容 作爲文檔的字段。
到目前爲止,我的策略是爲每一行創建一個Lucene文檔並對其進行索引。我的背後的想法是,1.這很容易,而且看起來合乎邏輯(對我來說) 2.如果我最終從某些文檔類型中提取內容並將它們放入字段中,所有需要的都是if語句檢查報告類型 並創建這些新字段。下面是相關代碼:
public void createDocument(){
Document luceneDocument=new Document();
luceneDocument.add(new Field("userid", userID, Field.Store.NO, Field.Index.NOT_ANALYZED));
luceneDocument.add(new Field("reportnumber", reportNum, Field.Store.NO, Field.Index.NOT_ANALYZED));
luceneDocument.add(new Field("reporttype", reportType, Field.Store.NO, Field.Index.NOT_ANALYZED));
luceneDocument.add(new Field("description", description, Field.Store.NO, Field.Index.ANALYZED));
luceneDocument.add(new Field("report", report, Field.Store.NO, Field.Index.ANALYZED));
if(reporttype.equalsIgnoreCase("MATH"){
luceneDocument.add(new Field("more fields", field content, Field.Store.NO, Field.Index.ANALYZED));
}
indexwriter.add(luceneDocument)
indexwriter.close
}
是否具有相同的記錄影響Lucene的搜索效率,以任何方式不同的文件?
2.會相比,具有Lucene的每一個記錄文檔時(我不存儲任何領域)這種方法有超過頭任何顯著的磁盤空間?
在此先感謝您的回覆,