如何配置compass的索引位置爲相對路徑

Compass是對lucene進行封裝的java項目,使得在spring,hibernate這種環境下非常容易的實現全文檢索,也極大的提高了效率。所以在myblog裏面我也使用了compass作爲全文索引。 從Compass的samples裏面的petclinic裏面可以找到Compass的配置。 classpath:org/compass/sample/petclinic/petclinic.cmd.xmlclasspath:petclinic.cpm.xmlfile://${user.home}/compass/petclinicorg.compass.spring.transaction.SpringSyncTransactionFactory這裏配置的索引位置是用的系統的絕對路徑,可能大部分的人還是希望索引能放到項目的一個子目錄裏面,就是使用相對路徑的方式。但是如果直接修改 file://${user.home}/compass/petclinic 爲 /compass/petclinic 這樣是不行的。剛開始我也是這樣修改的。其實我們看一下LocalCompassBean的源代碼就知道怎麼做了。 if (this.compassSettings != null) { config.getSettings().addSettings(this.compassSettings); } ...... if (config.getSettings().getSetting(CompassEnvironment.CONNECTION) == null && connection != null) { config.getSettings().setSetting(CompassEnvironment.CONNECTION, connection.getFile().getAbsolutePath()); } 這裏可以看到如果你配置compassSettings的時候配置過compass.engine.connection的話compass就會使用你配置的值也就是絕對路徑。如果你沒有配置就會去讀connection的值,而connection的類型是org.springframework.core.io.Resource,這個是spring封裝的資源類,提供很多種訪問方式 file classpath ,這裏就可以使用相對路徑了。去掉compassSettings裏面的compass.engine.connection 的配置,加上connection的配置就可以實現相對路徑了。比如myblog裏面的配置 classpath:com/jdkcn/compass/lucene/indexesorg.compass.spring.transaction.SpringSyncTransactionFactory webapp啓動之後compass就會在你的應用的/lucene/indexes目錄下建立索引了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章