當前位置:首頁 » 操作系統 » lucene源碼分析

lucene源碼分析

發布時間: 2023-05-31 13:59:57

『壹』 如何在eclipse中導入lucene源碼

您好,很高興為您解答: tgz包是linux下常用的壓縮包格式,因為在linux下沒有Windows平台下的rar和zip壓縮包。 如果,你是在windows平台下開發,建議你重新下載一個rar或zip格式的包。 如果你是在linux下開發,那麼你可以通過命令來減壓後使用。...

『貳』 lucene-3.6.0.tgz和lucene-3.6.0-src.tgz是啥啊,怎麼有兩個類似的文件包呢;

已經有答案了,很簡單.看到tgz結尾的就是Linux相關操作系統使用的壓縮包,就想Windows系統下的zip 和rar結尾的壓縮包一樣.

.asc格式的程序文件,是壓縮過的Concept的程序文件,需要用Concept里的轉換Convert功能,而且,只能是低版本向高版本轉.

詳細一點說明,我給你找了一點資料

後綴為asp asa asc的文件都是ASP文件
Active Server Page(ASP,活動伺服器頁面)就是一個編程環境,在其中,可以混合使用HTML、腳本語言以及組件來創建伺服器端功能強大的Internet應用程序。
ASP的工作原理:

當在Web站點中融入ASP功能後,將發生以下事情:

1、用戶調出站點內容,默認頁面的擴展名是.asp。

2、瀏覽器從伺服器上請求ASP文件。

3、伺服器端腳本開始運行ASP。

4、ASP文件按照從上到下的順序開始處理,執行腳本命令,執行HTML頁面內容。

5、頁面信息發送到瀏覽器。

因為腳本是在伺服器端運行的,所以Web伺服器完成所有處理後,將標準的HTML頁面送往瀏覽器。這意味著,ASP只能在可以支持的伺服器(WINNT系列伺服器)上運行。讓腳本駐留在伺服器端的另外一個益處是:用戶不可能看到原始腳本程序的代碼,用戶看到的,僅僅是最終產生的HTML內容。計算過程在伺服器上進行,返回Html腳本,而不需要客戶端進行運算。WIN2003中使用的是ASP3.0版本,將較長使用的頁面存放在硬碟中(而不僅僅是在內存中),這意味著緩存了更多的原來需要重新編譯的內容,極大的提高了性能。

可以利用任何支持文本的編輯器或網頁設計器修改
利用IIS可以運行

『叄』 lucene按匹配度排序是怎麼做到的

Lucene的搜索結果默橡戚認按相關度排序,這個相關度排序是基於內部的Score和DocID,Score又基於關鍵詞的內部評分和做索引時的boost。默認Score高的排前面,如果Score一樣,再按索引順序,先索引檔圓的排前面。那麼有人問了,如果我要先索引的排後面怎麼辦呢?隱士研究了源碼後發現這是相當簡單的事情。以下代碼基於Lucene 2.0。

看Sort的默認構造函數,相關度就是SortField.FIELD_SCORE和SortField.FIELD_DOC的組合。

java 代碼
/**
* Sorts by computed relevance. This is the same sort criteria as calling
* {@link Searcher#search(Query) Searcher#search()}without a sort criteria,
* only with slightly more overhead.
*/
public Sort() {
this(new SortField[] { SortField.FIELD_SCORE, SortField.FIELD_DOC });
}
那麼該如何構造我們需要的SortField呢?請看SortField的一個構造函數,有一個參數reverse可供我們調整結果集的順序。

java 代碼
/** Creates a sort, possibly in reverse, by terms in the given field with the
* type of term values explicitly given.
* @param field Name of field to sort by. Can be <code>null</code> if
* <code>type</code> is SCORE or DOC.
* @param type Type of values in the terms.
* @param reverse True if natural order should be reversed.
*/
public SortField (String field, int type, boolean reverse) {
this.field = (field != null) ? field.intern() : field;
this.type = type;
this.reverse = reverse;
}
由此可見,只要構造一個SortField[]就可以實現我們要的功能,請看:

java 代碼
// 評分降序,評分一樣時後索引的排前面
new SortField[] { SortField.FIELD_SCORE, new SortField(null, SortField.DOC, true) }

// 評分升序,評分一樣時後索引的排前面,呵呵,此為最不相關的排前面,挺有趣的
new SortField[] { new SortField(null, SortField.SCORE, true), new SortField(null, SortField.DOC, true) }
呵呵,只要將此SortField[]作為參數傳入Sort的構行如塌造函數得到Sort的一個instance,將此instance傳入searcher.search(query, sort)即可得到了期望的結果。

『肆』 如何在eclipse中導入lucene源碼

1.啟動eclipse,使用svn插件從https://svn.apache.org/repos/asf/lucene把trunk代碼checkout出來。

2.如果你沒有安裝ant,那麼先安裝ant(ant.apache.org)。

3.進入cmd,切入到源代碼目錄(在lucene和solr目錄的上一級)。

4.然後使用ant eclipse(如果你沒有安裝ivy的話,ant會提示你安裝,按照提示安裝)

5.在eclipse中創建java project,勾掉Use default location,選擇luence,然後下一步直到完成導入lucene,同樣的導入solr。

6.因為solr引用lucene,所以在solr的buildpath中加入對lucene項目引用。

『伍』 Elasticsearch解決問題之道——請亮出你的DSL

0、引言

在業務開發中,我們往往會陷入開發的細枝末節之中,而忽略了事物的本源。

經常有同學問到:

等等等等…..

以上的看似復雜的問題,如果轉換成DSL,清楚的寫出來,梳理清楚問題的來龍去脈,問題就自然解決了一大半。

所以,請亮出你的dsl,不論什麼語言的檢索,轉換到es查詢都是sql查詢,在es中對應dsl語法,es再拆解比如:分詞match_phrase拆解成各term組合,最終傳給lucene處理。

亮出你的dsl,確保編程里的實現和你的kibana或者head插件一致是非常重要、很容易被忽視的工作。

如果對dsl拆解不理解,那就再 加上 profile:true或者explain:true拆解結果一目瞭然。

維基網路定義:領域特定語言(英語:domain-specific language、DSL)指的是專注於某個應用程序領域的計算機語言。又譯作領域專用語言。

Elasticsearch提供基於JSON的完整查詢DSL來定義查詢。 將Query DSL視為查詢的AST(抽象語法樹),由兩種類型的子句組成:

1、葉子查詢子句

葉查詢子句查找特定欄位中的特定值,例如匹配,術語或范圍查詢。 這些查詢可以單獨使用。

2、復合查詢子句

復合查詢子句可以組合其他葉子或復合查詢,用於以邏輯方式組合多個查詢(例如bool或dis_max查詢),或更改其行為(例如constant_score查詢)。

給個例子,一看就明白。

看到這里,可能會有人著急了:「我X,這不是官網定義嗎?再寫一遍有意思嗎?」

引用一句雞湯話,「再顯而易見的道理,在中國,至少有一億人不知道」。同樣的,再顯而易見的問題,在Elasticsearch技術社區也會有N多人提問。

基礎認沒譽知不怕重復,可怕的是枯鏈段對基礎的專研、打磨、夯實。

Elasticsearch相關的核心操作,廣義上可做如下解讀,不一定涵蓋全,僅拋磚引玉,說明DSL的重要性。

從大到小。

集群的管理,一般我們會使用Kibana或者第三方工具Head插件、cerebro工具、elastic-hq工具。

基本上硬體的(磁碟、cpu、內存)使用率、集群的 健康 狀態都能一目瞭然。

但基礎的DSL會更便捷,便於細粒度分析問題。

如:集群狀態查詢:

如:節點熱點線程查看:

如:集群分片分配情況查看:

索引生命周期是一直強調的概念,主要指索引的「生、老、病、死」的全過程鏈條的管理。

創建索引我們優先使用較單純index更靈活的template模板。

創建索引類似Mysql的創建表的操作,提前設計好表結構對應ES是提前設計好M app ing非常重要。

兩個維度:

舉例:

如:索引清理緩存。

如:某原因導致分片重新分配,_recovery查看分片分配狀態。

高版本的索引生命周期管理推薦使用:ILM功能。

這個是喚讓大家再熟悉不過的了。

舉例:

刪除數據包括:指定id刪除 delete和批量刪除delete_by_query(滿足給定條件)。

更新操作。包括:指定id的update/upsert或者批量更新update_by_query。

這是ES的重頭戲。包含但不限於:

1、支持精確匹配查詢的:term、range、exists、wildcard、prefix、fuzzy等。

2、支持全文檢索的:match、match_phrase、query_string、multi_match等

1、Bucketing分桶聚合

舉例:最常用的terms就類似Mysql group by功能。2、Metric計算聚合

舉例:類比Mysql中的: MIN, MAX, SUM 操作。3、Pipeline針對聚合結果聚合

舉例:bucket_script實現類似Mysql的group by 後having的操作。

留給大家 結合 業務場景思考添加。

這里把開頭提到的幾個問題逐一解答一下。

實際Mysql業務中,我們一般是先驗證sql沒有問題,再寫業務代碼。

實際ES業務中,也一樣,先DSL確認沒有問題,再寫業務代碼。

寫完java或者python後,列印DSL,核對是否完全一致。

不一致的地方基本就是結果和預期不一致的原因所在。

第一步:藉助analyzer API分析查詢語句和待查詢document分詞結果。

這個API的重要性,再怎麼強調都不為過。

第二步:可以藉助profile:true查看細節。第三步:核對match_phrase詞序的原理。

6.3版本後已經支持sql,如果不會寫,可以藉助translate 如下API翻譯一下。

不夠精確,但足夠參考用了,需要根據業務細節微調。

當然,還是 建議 ,從業務出發,自己寫DSL。

從大往小,逐步細化排解

END

公眾號 ( sheng )里回復 面經、ES、Flink、 Spring、Java、Kafka、監控 等關鍵字可以查看更多關鍵字對應的文章

1、《從0到1學習Flink》—— Apache Flink 介紹

2、《從0到1學習Flink》—— Mac 上搭建 Flink 1.6.0 環境並構建運行簡單程序入門

3、《從0到1學習Flink》—— Flink 配置文件詳解

4、《從0到1學習Flink》—— Data Source 介紹

5、《從0到1學習Flink》—— 如何自定義 Data Source ?

6、《從0到1學習Flink》—— Data Sink 介紹

7、《從0到1學習Flink》—— 如何自定義 Data Sink ?

8、《從0到1學習Flink》—— Flink Data transformation(轉換)

9、《從0到1學習Flink》—— 介紹 Flink 中的 Stream Windows

10、《從0到1學習Flink》—— Flink 中的幾種 Time 詳解

11、《從0到1學習Flink》—— Flink 讀取 Kafka 數據寫入到 ElasticSearch

12、《從0到1學習Flink》—— Flink 項目如何運行?

13、《從0到1學習Flink》—— Flink 讀取 Kafka 數據寫入到 Kafka

14、《從0到1學習Flink》—— Flink JobManager 高可用性配置

15、《從0到1學習Flink》—— Flink parallelism 和 Slot 介紹

16、《從0到1學習Flink》—— Flink 讀取 Kafka 數據批量寫入到 MySQL

17、《從0到1學習Flink》—— Flink 讀取 Kafka 數據寫入到 RabbitMQ

18、《從0到1學習Flink》—— 你上傳的 jar 包藏到哪裡去了

19、大數據「重磅炸彈」——實時計算框架 Flink

20、《Flink 源碼解析》—— 源碼編譯運行

21、為什麼說流處理即未來?

22、OPPO數據中台之基石:基於Flink SQL構建實數據倉庫

23、流計算框架 Flink 與 Storm 的性能對比

24、Flink狀態管理和容錯機制介紹

25、原理解析 | Apache Flink 結合 Kafka 構建端到端的 Exactly-Once 處理

26、Apache Flink 是如何管理好內存的?

27、《從0到1學習Flink》——Flink 中這樣管理配置,你知道?

28、《從0到1學習Flink》——Flink 不可以連續 Split(分流)?

29、Flink 從0到1學習—— 分享四本 Flink 的書和二十多篇 Paper 論文

30 、360深度實踐:Flink與Storm協議級對比

31、Apache Flink 1.9 重大特性提前解讀

32、如何基於Flink+TensorFlow打造實時智能異常檢測平台?只看這一篇就夠了

33、美團點評基於 Flink 的實時數倉建設實踐

34、Flink 靈魂兩百問,這誰頂得住?

35、一文搞懂 Flink 的 Exactly Once 和 At Least Once

36、你公司到底需不需要引入實時計算引擎?

『陸』 在Myeclipse上建立Lucene2.9.0工程,但是看不到諸如Document和Field等類的源碼.求解

首先下載源碼包,在官網上都能下都是族高悔壓縮格式的
然後你在自己寫的 有導入Lucene相關的類名上按住CTRL然後點擊類名
會彈念凳出一個.CLASS的文件,這個是看不見源碼的,
然後在這個頁面的左上方有個Attach Source 這樣一個按鈕兆正,你點瞭然後把源碼包導入就可以看見源碼了,祝你好運

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:637
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:366
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:82
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:308
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:789
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:339
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:210
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:810
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:364
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:590