Carrot2 in action 初步印象

2022-08-05 17:54:13 字數 3694 閱讀 1872

rawcluster

:聚類中的類別單位

rawcluster.getdocuments()

:獲得該類的文件列表

rawdocument

:每個類的文件單位

stc:字尾樹表示法

2008-11-13

carrot2的組建(components)的介紹:

1. 輸入(

input

):產生聚類文字的組建。

carrot2

針對目前的幾個主要搜尋引擎

(yahoo:

carrot2-input-yahooapi.jar, google, msn search)

和開源搜尋引擎(

lucene:

carrot2-input-lucene.jar

)以及xmls

介面(such as rss or opensearch:

carrot2-input-xml.jar).

,提供了幾個預設的

輸入組建。除此之外,你也可以自己重寫自己的輸入組建。

localcomponentfactory

lucenelocalinputcomponentconfig

lucenelocalinputcomponentfactoryconfig

// create lucene input component factory.

//finallocalcomponentfactory input =newlocalcomponentfactory()

};// add lucene input as 'lucene-myindex'

controller.addlocalcomponentfactory(

"lucene-myindex"

, input);

2. 過濾器(

filters):

carrot2

中的過濾器其實就是聚類組建和一些過濾操作的集合。

carrot2

自帶有一定數量的過濾器,每乙個過濾器都

執行乙個不同的演算法(如

lingo,k-mean and so on

),並且根據處理鏈中

,在它之前的過濾器的不同和以及自身配置的不同,每個過濾器會有一些不同的要求設定。

eg:carrot2-filter-lingo.jar,

carrot2-filter-haog.jar,

carrot2-filter-stc.jar

finallocalcomponentfactory lingo =newlocalcomponentfactory()

// for more verbose configuration.

returnnewchineselingolocalfiltercomponent();}};

// add the clustering component as "lingo-classic"

controller.addlocalcomponentfactory(

"lingo-classic"

, lingo);

3. 輸出(

output

):當從聚類器獲得結果的時候,

carrot2

用輸出元件去對這些結果進行一些處理操作。實際上輸出元件處理的是介面「

rawcluster

」的例項。最簡單的處理方式就是把哲學聚類結果儲存沒在乙個陣列中,直到所有的聚類操作完成;乙個更高階一點的方式就是,聚類結果出來乙個馬上進行輸出處理,而不是放在乙個陣列中最後統一處理,這種凡是的實質就是乙個與聚類操作(

filter

)的同步。

finallocalcomponentfactory output =newlocalcomponentfactory()

};// add the output component as "buffer"

controller.addlocalcomponentfactory(

"buffer"

, output);

話外話:

carrot2

中之所以很多地方都用到

」local」

來命名,這其實是由於歷史原因:在

carrot2

中曾經設計過乙個用於遠端通訊的並行組建,雖然現在棄用了,但是與之相對的本地組建用「

local

」命名的方式一直沿用著。

2008-11-14

設計概要

1. carrot2

中localcomponent

是一下三種本地組建的超級幾口:

localinputcomponent

:用於接受使用者的查詢和處理初始資料

localfiltercomponent

:用於改變或者豐富資料

localoutputcomponent

:收集聚類結果或者對結果做一些處理,如用視覺化組建顯示這些結果等等

2. 組建初始化

在任何處理操作之前,元件和處理器(

processes

:localprocessbase

)被新增到乙個組建容器,同時它們也會被乙個控制(

controller

)元件所引用。這個控制項不會再核心框架中被明確指定,因為它更有可能是應用相關的,即屬於應用層,已經超出了限定的範圍。然而,在框架中卻指定了乙個

localcontrollercontext

介面,並且它會傳遞給每乙個例項化的組建。其實

localcontrollercontext

主要是用來證實每個組建和處理器之間的相容性的,同時也為實現一些別的元件型別提供了可能性。

3. 處理器

乙個本地處理器包含了處理查詢和在處理鏈中裝配元件的邏輯過程。這個介面(

localprocess

)的例項必須由框架的使用者來定義(也就是應用相關),因為他要決定哪些組建要被用於處理查詢而他們之間又是如何聯絡的。

localprocess

的行為規範是十分複雜的,一般鼓勵開發者去使用它的子類

localprocessbase

,可以過載它裡面的鉤子(

hook

)函式。

//// in the final step, assemble a process from the above.

//try));

}catch(initializationexception e)catch(missingcomponentexception e)

4. 查詢執行

當所有的處理器和組建都新增到控制器之後。控制器就會用乙個

query

()(舊版如下)將乙個查詢請求傳遞給本地處理例項。

public void object query(requestcontext context, string query) throws exception

Struts2 in action讀書筆記 1

b 第二章 saying hello to struts2 b 1.struts.xml是framework的入口,適用於在它的預設package中定義全域性的action 例如 menu menu.jsp 2.可以在配置檔案中指定空action,即沒有具體的class,strtus2提供預設的ac...

初談指標(2)

首先我們需要理清指標與陣列的關係 陣列不等於指標,但在某些情況下二者等價。定義乙個一維陣列int a i 當我們使用a i 的時候,實際上編譯器做了轉換處理,變成了 a i 一維陣列是方便理解的,那麼二維陣列呢?a i j 與 a i j 具有等價效果,對後者分析如下 a表示二維陣列中第一行的位址,...

函式初接觸2

函式是第一類物件 函式名是可以被引用的 def foo print hello wanglu a foo a 函式名可以當做引數傳遞 deffoo a,b,doo print a,b,doo doo def coo print hello wanglu foo 1,2,coo 函式名可以當做返回值使...