lucene搜尋原始碼過程簡析

2021-06-20 10:44:07 字數 1313 閱讀 8937

今天來談下有關在lucene中,如何完成乙個搜尋的過程,用過lucene的朋友都會經常用到如下的一段**: 

query query=parser.parse(searchtext);//解析構建query樹

topdocs td=search.search(query, 100);//檢索的入口,限制返回結果集100

scoredoc sd=td.scoredocs;//載入所有的documnet文件

以上的**,可能是我們基本的檢索中用得最多的一段了,但事實上,除了最基礎的檢索外,search方法,還有大量極其豐富的過載方法,api方法如下: 

topdocs search(query query, int n);

topdocs search(query query, filter filter, int n);

topfielddocs search(query query, int n,sort sort);

void search(query query, filter filter, collector results);

void search(query query, collector results);

topfielddocs search(query query, filter filter, int n,sort sort);

topfielddocs search(query query, filter filter, int n, sort sort, boolean dodocscores, boolean domaxscore);

//以下是lucene支援的深度分頁檢索方式

topdocs searchafter(scoredoc after, query query, filter filter, int n, sort sort);

topdocs searchafter(scoredoc after, query query, int n, sort sort);

topdocs searchafter(scoredoc after, query query, filter filter, int n, sort sort, boolean dodocscores, boolean domaxscore);

最後簡單總結一下各個步驟的順序: 

步驟描述

一首先根據檢索文字生成query樹

二如果有filter的話,會先執行filter過濾我們需要的文件集合

三建立weight和scorer,並通過scorer.score()進行評分

四最後在佇列裡進行排序,預設是按照相關性得分排序

Sample BSP原始碼簡析

ifndef bsp h define bsp h include sdksample.h include filesystemlayer.h filesystemlayer.h 用來處理檔案系統的目錄 路徑等資訊 後面的mfslayer getconfigfilepath就是用了該檔案中定義的類。...

libc hashtable 原始碼簡析

本文分析的是 中截止至 2016 年 1 月 30 日最新的libc libc 中,hashtable的實現為鏈式結構。在教科書 introduction to algorithm 3rd edition 中,介紹的實現是由乙個陣列作為buckets,每個陣列中儲存乙個鍊錶。但是libc 中,使用乙...

HashMap原始碼簡析

hashmap 基於map介面實現的,允許使用null值和null鍵,但資料無序的.劃重點 執行緒不安全.若是想獲取乙個執行緒安全的hashmap,可用下面方法 map map collections.synchronizedmap new hashmap hashmap的主幹是entry陣列,每乙...