<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    不做浮躁的人
    正在行走的人...
    posts - 171,  comments - 51,  trackbacks - 0

    Compass概念:
    1:Compass相當(dāng)于hb的SessionFactory
    2:CompassSession相當(dāng)于hb的Session
    3:CompassTransaction相當(dāng)于hb的transaction。

    Compass也是采用CompassConfiguration(裝載配置和映射文件)進(jìn)行創(chuàng)建的。創(chuàng)建Compass時將會鏈接已經(jīng)存在的索引或者創(chuàng)建一個新的索引。當(dāng)Compass創(chuàng)建完后,就可以用compass得到compassSession。compassSession主要是起管理搜索引擎的數(shù)據(jù)。和hb的SessionFactory一樣,compass通常在系統(tǒng)啟動時創(chuàng)建,在所有compassSession創(chuàng)建時使用。

    當(dāng)使用CompassSession查詢數(shù)據(jù)時,將會返回CompassHits接口的實例。compassHits可以得到scores,resources和mapped objects.

    Compass也提供了CompassTemplate和CompassCallback類處理會話和事務(wù)的處理。CompassTemplate template = new CompassTemplate(compass);

    為了簡化CompassConfiguration的建立,compass提供了CompassConfigurationFactory類來建立CompassConfiguration
    CompassConfiguration conf =CompassConfigurationFactory.newConfiguration();

    除了通過xml文件設(shè)置外,可以通過CompassConfiguration.addXXX方法更改設(shè)置,也可以通過CompassSetting來設(shè)置。compassSetting和java 的Properties相似。也可以通過CompassEnvironment和LuceneEnvironment類來設(shè)置。

    Compass中必須設(shè)置的項包括:compass.engine.connection。

    一個重要的設(shè)置方面是組設(shè)置。如下面設(shè)置一個test的轉(zhuǎn)換器:
    org.compass.converter.test.type=eg.TestConverter
    org.compass.converter.test.param1=value1
    org.compass.converter.test.param2=value2

    所有的compass的操作性設(shè)置都可以定義在一個配置文件中,文件的名字默認(rèn)為:compass.cfg.xml,如果取名不一樣這在初始化CompassConfiguration時,使用CompassConfiguration.config(fileName)。

    因為索引是事務(wù)性的。所以在進(jìn)行操作的過程中,就存在鎖的概念。可以設(shè)置鎖文件的位置,默認(rèn)為java.io.tmp,<transaction lockDir="/shared/index-lock" />

    別名、資源和屬性的概念:
    資源(Resource):資源表示屬性的集合,相當(dāng)于虛擬文檔。一個資源通常和一個別名聯(lián)系在一起,幾個資源可以屬于同一個別名。別名擔(dān)當(dāng)資源和映射定義的聯(lián)系角色。屬性是指一個鍵值對。

    在OSEM/XSEM中,容易忽視的是資源在何處被使用,因為處理內(nèi)容都被轉(zhuǎn)換成應(yīng)用程序的模型或者是xml的結(jié)構(gòu)數(shù)據(jù)。資源很少被使用。

    通過資源和屬性,可以采用統(tǒng)一的方式訪問相同語義的模型。比如應(yīng)用程序中有兩個模型:學(xué)生和教師。我們將學(xué)生和教師的名字都設(shè)置成相同語義的元數(shù)據(jù):name(資源屬性名),這樣將會允許我們所有的name搜索顯示結(jié)果在資源層次上。

    分析器:該組件主要是預(yù)處理輸入文本。用于搜索和索引的文本分析上。要求搜索和索引使用相同的分析器。
    Compass內(nèi)置兩個分析器名稱:default和search。缺省分析器用戶沒有其它分析器配置時使用。search用于搜索查詢的分析。
    配置定制的分析器的參數(shù)可以通過Setting方式置入:
    <analyzer name="deault" type="CustomAnalyzer" analyzerClass="eg.MyAnalyzer">
    <setting name="threshold">5</setting>
    </analyzer>


    分析過濾器:
    分析過濾器能夠被不同的分析器穿插使用。配置如下:
    <analyzer name="deafult" type="Standard" filters="test1, test2" />
    <analyzerFilter name="test1" type="eg.AnalyzerTokenFilterProvider1">
    <setting name="param1" value="value1" />
    </analyzerFilter>
    <analyzerFilter name="test2" type="eg.AnalyzerTokenFilterProvider2">
    <setting name="paramX" value="valueY" />
    </analyzerFilter>

    同義處理:同義處理分析過濾器:返回給定詞的同義詞
    <analyzer name="deafult" type="Standard" filters="synonymFilter" />
    <analyzerFilter name="synonymFilter" type="synonym">
    <setting name="lookup" value="eg.MySynonymLookupProvider" />
    </analyzerFilter>

    查詢分析器:
    <queryParser name="test" type="eg.MyQueryParser">
    <setting name="param1" value="value1" />
    </queryParser>



    索引文件的結(jié)構(gòu):

    compass的子索引相當(dāng)于lucene的一個索引。當(dāng)compound設(shè)置為true時,lucene次采用一個segments文件存儲所有索引內(nèi)容。子索引對事務(wù)型操作尤為重要。

    compass支持read_committed和serializable、batch_insert級別的事務(wù)

    compass事務(wù)鎖用在自索引級別上,這意味著臟操作只發(fā)生在各自的子索引上。

    compass事務(wù)在臟操作(創(chuàng)建,保存,刪除)時要求一個鎖。搜索時應(yīng)該只用read only事務(wù)。鎖超時一般設(shè)置為10秒。
    <transaction lockTimeout="15" lockPollInterval="200" />


    事務(wù)隔離:
    1:read_committed:當(dāng)開始該事務(wù)時,是不需要鎖的。因此速度會快。
    2:serializable:和上面一樣。只是當(dāng)事務(wù)開始時,對所有的自索引有一個鎖。性能降低。
    3:batch_insert:使用了lucene提供的快速的批量索引的功能。這個事務(wù)操作只支持create操作。如果已經(jīng)有同名的別名和ids的資源已經(jīng)存在,那么將會在一個索引中出現(xiàn)兩個資源。這種事務(wù)是不能回滾的。

    FS Transaction Log:存儲許多事務(wù)數(shù)據(jù)到文件系統(tǒng)中。
    <transaction isolation="read_committed">
    <readCommittedSettings>
    <fsTransLog path="/tmp" readBufferSize="32" writeBufferSize="4098" />
    </readCommittedSettings>
    </transaction>

    常量子索引hash:
    影射別名到子索引的最簡單辦法是將某個別名的所有的可搜索內(nèi)容索引到相同的子索引里面。如:
    <compass-core-mapping>
    <[mapping] alias="test-alias" sub-index="test-subindex">
    <!-- ... -->
    </[mapping]>
    </compass-core-mapping>
    test-alias將會影射所有的實例到test-subindex子索引中。如果sub-index沒有定義,則將缺省為alias。

    Modulo Sub Index Hashing:允許將一個別名代表的實例索引到不同的子索引中。根據(jù)給定的大小對索引進(jìn)行分割。文件名是給定的前綴+“_"+數(shù)字。
    <compass-core-mapping>
    <[mapping] alias="A">
    <sub-index-hash type="org.compass.core.engine.subindex.ModuloSubIndexHash">
    <setting name="prefix" value="test" />
    <setting name="size" value="2" />
    </sub-index-hash>
    <!-- ... -->
    </[mapping]>
    </compass-core-mapping>
    會產(chǎn)生[test_0]和[test_1]兩個子索引文件。

    Custom Sub Index Hashing:
    ConstantSubIndexHash?和 ModuloSubIndexHash都實現(xiàn)了compass的SubIndexHash接口。定制子索引hash必須實現(xiàn)getSubIndexes和mapSubIndex(String alias,Property[] ids)兩個方法。

    Optimizers:優(yōu)化器,每個臟操作提交成功都會在各自的子索引中產(chǎn)生另一個segment,子索引中的segment越多,搜索操作就越慢,因此保持索引優(yōu)化,控制segment的數(shù)量很重要。要做的就是合并小segment到大的segment 。
    索引優(yōu)化器在子索引級別執(zhí)行。在優(yōu)化的過程中,優(yōu)化器將鎖定子索引,以便于臟操作。

    調(diào)度優(yōu)化:compass的每一個優(yōu)化器都能包裝為調(diào)度方式執(zhí)行。
    <optimizer scheduleInterval="90" schedule="true" />

    Aggressive Optimizer:通過設(shè)置segments的大小,當(dāng)達(dá)到指定的大小時,將所有的segement合并到一個segment。這樣搜索的效率最高。
    Adaptive Optimizer:和Aggressive Optimizer不同的是,該優(yōu)化器只合并新的小segment。
    Null Optimizer:不做任何優(yōu)化。當(dāng)做batch_insert事務(wù)時,離線創(chuàng)建索引或已經(jīng)全部優(yōu)化索引,一般使用它。

    直接訪問Lucene:compass提供了LuceneHelper類,該類可以直接訪問lucene的api。

    posted on 2006-12-01 16:38 不做浮躁的人 閱讀(2739) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     

    <2006年12月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    常用鏈接

    留言簿(9)

    隨筆分類(31)

    隨筆檔案(75)

    文章分類(1)

    文章檔案(3)

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲M码 欧洲S码SSS222| 最近中文字幕无免费| 免费人成大片在线观看播放| 亚洲欧美日韩一区二区三区| 亚洲av永久中文无码精品| 亚洲风情亚Aⅴ在线发布| 亚洲av成本人无码网站| 婷婷亚洲综合一区二区 | 国产在线a不卡免费视频| 白白国产永久免费视频| 亚洲?v无码国产在丝袜线观看| 亚洲AⅤ无码一区二区三区在线| 亚洲国产精品成人一区| 久久久久久久亚洲精品| 亚洲成AV人片在| 国产日韩精品无码区免费专区国产| 免费无码午夜福利片69| 一级毛片不卡免费看老司机| 三上悠亚电影全集免费| 日本免费中文字幕| 99re热免费精品视频观看| 我要看WWW免费看插插视频| 国产精品免费播放| 精品亚洲成α人无码成α在线观看 | 亚洲av区一区二区三| 国内自产少妇自拍区免费| 国产精品高清全国免费观看| 久久久久久A亚洲欧洲AV冫| 亚洲精品福利视频| 涩涩色中文综合亚洲| 国产亚洲福利精品一区二区| 久久免费香蕉视频| 91av免费观看| 精品久久久久久久免费人妻| 国产亚洲一区二区三区在线不卡 | 久久精品国产亚洲香蕉| 亚洲国产电影在线观看| 亚洲国产精品久久久久秋霞小| 一道本在线免费视频| 99在线在线视频免费视频观看| 18禁超污无遮挡无码免费网站国产 |