1. 程式人生 > >lucene總結——(十七)

lucene總結——(十七)

文件的 程序 分詞 analyzer 搜索 ocs 硬盤 row top

(01)rownum和rowid有何區別?
rownum在表結構中是看不見的,只能在select中明確寫出rownum方可顯示
rownum與不同的表綁定在一起,每張表都有自已的rownum,每張表的rownum可以相同,表亡rownum亡
rownum可用於oracle分頁中
rownum是從1開始的連續不斷的數值型

rowid在表結構中是看不見的,只能在select中明確寫出rowid方可顯示
rowid在每張表中都不一樣,表亡rowid亡,它是溝通表與DBF文件的橋梁
rowid可用於索引中

(02)IndexWriter和IndexSearcher有何作用?

IndexWriter將Document對象寫入到索引庫中,適用於增刪改操作
IndexSearcher根據關鍵字去索引庫中查詢符合條件的數據,只適用於查詢操作

(03)Directory directory = FSDirectory.open(new File("E:/LuceneDBDBDBDBDBDBDBDBDB"));這句話什麽意思?
索引庫對應的硬盤上的目錄,如果無則創建;返之不創建

(04)document.add(new Field("content",article.getContent(),Store.YES,Index.ANALYZED));這句話什麽意思?
將content字段和其對應的值,放入到索引庫的原始表中,且該字段的值需要進行分詞

(05)TopDocs topDocs = indexSearcher.search(query,10);這句話什麽意思?
去索引庫中查詢符合條件的數據,超過10條數據,只取前10條;不足10條,以實際為準

(06)談談索引庫優化有哪幾個方面
>>文件數量問題
>>文件大數問題
>>寫入索引庫速度問題

(07)分詞器有什麽作用
用戶不可能完全記住所有文章的內容,可能只能記住該文章中的某些關鍵字,
那麽做為搜索功能的程序來講,就需要用關鍵字去最大限度搜索到用戶需要的
內部,分詞器就在中間起了一個橋梁作用

(08)document.get("content")和document.getField("content")有什麽區別?
get()獲取document對象中content字段的值,返回值是String類型
getField("content")獲取document對象中content字段,返回值是Field類型

(09)在默認情況下,搜索結果是如何排序的?如果有二個結果相同,又是如何排序的?
在默認情況下,按得分度的高低排序,如果相同得份,按你插入索引庫的先後排序

(10)QueryParser queryParser =
new QueryParser(LuceneUtil.getVersion(),"content",LuceneUtil.getAnalyzer());
QueryParser queryParser =
new MultiFieldQueryParser(LuceneUtil.getVersion(),new String[] {"content","title"},LuceneUtil.getAnalyzer());
有什麽區別?
第一個API表示單字段搜索
第二個API表示多字段搜索


































lucene總結——(十七)