`
crazycat03
  • 浏览: 175522 次
  • 性别: Icon_minigender_2
  • 来自: 呼和浩特
社区版块
存档分类
最新评论

Compass---Connection

阅读更多

Compass实例的唯一必要配置就是它的connection.

connection控制着索引将保存在那里,换一句话说就是索引的存储路径。

有下面几种存储方式:
1 文件系统存储
到目前为止,最受欢迎的而且是最简单的存储方法是在文件系统上保持索引,下面是一个基于connection配置的

简单文件系统例子,将索引保存在target/test-index路径下
<compass name="default">
<connection>
<file path="target/test-index"/>
</connection>
</compass>
compass.engine.connection=file://target/test-index

 

 

 

 

另一种文件系统方法的配置是基于使用Java 1.4 NIO mmap特性

<compass name="default">
<connection>
<mmap path="target/test-index"/>
</connection>
</compass>
compass.engine.connection=mmap://target/test-index
<compass name="default">
<connection>
<niofs path="target/test-index"/>
</connection>
</compass>
compass.engine.connection=niofs://target/test-index

 
2 随机存储
使用随机存储器的索引存储,索引数据可以保存在内存中。对于存储的代价来说,这样方便快速索引和搜索。
下面是配置的例子:

 

<compass name="default">
<connection>
<ram path="/index"/>
</connection>
</compass>
compass.engine.connection=ram://index

 
3 JDBC存储
JDBC存储connection类型允许索引数据保存到数据库中。保存索引的机制实际是模仿基于树的文件系统,子索引

表里的每行都代表着一个二进制数据的文件。
Compass实现,JdbCDirectory,它是建立在Lucene directory提取之上的,完全与其他的Compass解耦合,并且能
够用于单纯的Lucene应用。当在Compass中使用时,它可以更简单地配置,尤其是事务管理和jdbc数据源管理方面

下面是一个简单使用jdbc存储索引的例子,例子的配置是假定一个不变的配置,没有数据源池:

<compass name="default">
<connection>
<jdbc>
<dataSourceProvider>
<driverManager url="jdbc:hsqldb:mem:test"
username="sa" password=""
driverClass="org.hsqldb.jdbcDriver" />
</dataSourceProvider>
</jdbc>
</connection>
</compass>

 

 

以上的配置在jdbc元素上没有定义方言属性。Compass将尝试自动检测基于数据库元数据的数据库方言,如果检测

失败,方言将被设置,在我们的例子里,它应该是

dialect="org.apache.lucene.store.jdbc.dialect.HSQLDialect".

(1)管理环境
当达到一个jdbc索引存储的时候了解Compass是否工作在一个“受管理”的环境下是很重要的。一个管理环境是
Compass不能控制事务管理的环境。如果Compass可以控制事务,比如说是有本地事务工厂,它就不会被认为是一个管理环境。
    如果工作在一个无管理环境下,Compass将会用ransactionAwareDataSourseProxy封装数据源,并且可以提
交/回滚 jdbc 连接。当工作在一个管理环境下,不会出现封装,并且Compass将会让外部事务管理者去提交/回滚 连接。
    通常,并不是总是,当工作在一个管理环境下,jdbc数据源使用的是来自外部系统/配置。大多数情况下它会
是JNDI或外部数据源提供者(比如说Spring)。
    默认情况下,Compass工作在非管理环境下,那么jdbc元素的managed属性应该设为true.

(2) 数据源提供者

Compass考虑到不同的jdbc数据源提供者。DataSourceProvider实现的职责是为了配置和提供一个jdbc数据源实例。当谈到性能,尤其是在共享特性的时候,数据源的实现是非常重要的。
   
    所有Compass支持的不同数据源都允许配置自动提交标志。自动提交有三个值:false,true和external(不要
明确地设置自动提交,假定它已经在其他位置配置了)。自动提交模式的默认值是false并且是推荐值(external可以使用,但是必须确定将真实数据源设置为false)
 
a 驱动器管理器

所有提供者里最简单的,不需要任何外部的库或系统。主要的缺点是性能,因为它没有实现任何种类的共享。
b Jakarta Commons DBCP
  Compass能够使用Jakarta Commons DBCP作为数据源提供者配置,相对于驱动器管理提供者的性能而言,这是一
个推荐的选择,下面是使用时的例子:

<compass name="default">
<connection>
<jdbc>
<dataSourceProvider>
<dbcp url="jdbc:hsqldb:mem:test"
username="sa" password=""
driverClass="org.hsqldb.jdbcDriver"
maxActive="10" maxWait="5" maxIdle="2" initialSize="3" minIdle="4"
poolPreparedStatements="true" />
</dataSourceProvider>
</jdbc>
</connection>
</compass>

 

 

配置显示不同的设置可以用于dbcp数据源提供者,他们的值没有其他含义,是典型系统的推荐值,想获取更多信息,请查看Jakarta Commons DBCP文档。

c c3p0
Compass可以使用c3p0作为数据源配置,相对于驱动器管理的性能原因,她也是一个推荐的选择(
你想使用它或上一节的Jakarta Commons DBCP),这取决于你,下面是使用例子:

<compass name="default">
<connection>
<jdbc>
<dataSourceProvider>
<c3p0 url="jdbc:hsqldb:mem:test"
username="testusername" password="testpassword"
driverClass="org.hsqldb.jdbcDriver" />
</dataSourceProvider>
</jdbc>
</connection>
</compass>

 

 

c3p0数据源提供者将使用c3p0的ComboPooledDataSource,其他另外的设置可以使用c3p0.perperties文件设置,这个文件作为高级资源保存在同一个LASSPATH/classloader加载c3p0的jar文件的位置。请参考c3p0文档获取更多设置。

d JNDI
Compass也可以通过使用JNDI寻找数据源来配置,下面是使用的例子:

<compass name="default">
<connection>
<jdbc>
<dataSourceProvider>
<jndi lookup="testds" username="testusername" password="testpassword" />
</dataSourceProvider>
</jdbc>
</connection>
</compass>

 

 

jndi查找环境 ,包括java.naming.factory.initial和java.naming.provider.url的JDNI设置,可以配置在其他的jndi标签内,直接在Compass标签下面,注意,username和password用于数据源,而且是完全可选的。

e 外部
Compass可以使用ExteranlDataSourceProvider.类的外部数据源来配置,它使用java线程本地保存数据源为了之
后数据源提供者使用。设置数据源在ExteranlDataSourceProvider上使用静态方法setDataSource(DataSource

dataSource),下面是一个如何配置的例子:

<compass name="default">
<connection>
<jdbc>
<dataSourceProvider>
<external username="testusername" password="testpassword"/>
</dataSourceProvider>
</jdbc>
</connection>
</compass>

 

 

 

注意,username和password是用于数据源的,而且是可选的。

 

 

 

还有一些,有时间补上

 

分享到:
评论
1 楼 quasimodo_es 2013-01-25  
请教一个问题,compass 和 terracotta 整合的时候,connection是如何配置的?

相关推荐

    compass-reference.pdf

    - **Connection**:Compass 支持多种存储后端,包括文件系统、内存、JDBC 等。 - **FileSystemStore**:将索引存储在文件系统中。 - **RAMStore**:将索引存储在内存中,适用于对性能要求较高的场景。 - **Jdbc...

    connection-model:MongoDB连接模型

    安装npm install --save mongodb-connection-model用法建筑URI const Connection = require ( 'mongodb-connection-model' ) ;const c = new Connection ( { appname : 'My App' } ) ;console . log ( c . driverUrl...

    Compass+ lucene 通用代码(脱离数据库)

    &lt;prop key="compass.engine.connection"&gt;file:///var/index ``` 接下来,我们关注标签“源码”。Compass的源码设计使得我们可以自定义索引过程,扩展其功能。例如,通过继承Compass的`Mapping`接口,我们可以...

    tutorial-connection-pooling:一个演示 DBCP(数据库连接池)的 Maven 项目

    本教程项目“tutorial-connection-pooling”旨在通过Maven构建工具,演示如何使用DBCP(Jakarta Commons DBCP,即Apache的一个数据库连接池实现)来创建和管理数据库连接。 1. **数据库连接池概念**:数据库连接池...

    compass_hibernate_spring.zip

    &lt;prop key="compass.engine.connection"&gt;file:./compass_data &lt;prop key="compass.gps.device"&gt;hibernate ``` 然后,我们需要在Hibernate的SessionFactory配置中,引入Compass的GPS(Global Positioning ...

    data-service:MongoDB数据服务

    const Connection = require ( 'mongodb-connection-model' ) ; const DataService = require ( 'mongodb-data-service' ) ; var service = new DataService ( new Connection ( { hostname : '127.0.0.1' , ...

    JarCon Remote Server Connection Tool-开源

    JarCon(以前称为\“ Joe @ Rcon \”)是一个完整的远程“半条命:Counter-Strike”服务器连接工具。 服务器管理员可以使用它通过完整的日志分析来远程监视和控制其服务器。

    Laravel开发-laravel-mongodb-log

    你可以使用MongoDB的查询工具如MongoDB Compass或者编程方式来查看和分析这些日志数据。 此外,`laravel-mongodb-log`还允许开发者自定义日志记录行为,比如更改日志级别、添加额外信息等。在控制器或服务中,你...

    图书商城 后台语言: Java

    主要功能介绍: ...图书搜索、购买、在线浏览,购物车管理 后台echart图表显示、源代码在线编辑 主要技术: 数据库 : mysql ...&lt;prop key="compass.engine.connection"&gt;file://d:/compass_index&lt;/prop&gt;

    【重要】Lucene多线程操作实现.pdf

    `compass.engine.connection:.hibernateGpsDevice:hibernateHibernate3`可能指代了使用Hibernate作为数据持久层的配置,Hibernate是一个提供对象关系映射(ORM)功能的框架,它能够将Java对象映射到关系型数据库中的表...

    phonegap api中文手册

    5. **Connection(网络连接)** - 检测当前的网络状态,如是否连接到Wi-Fi或蜂窝数据。 - 方法`checkNetwork()`可用于获取当前的网络连接类型。 6. **Contacts(联系人)** - 访问设备的联系人数据库,读取或...

    B4A初级教程

    - **创建图形指南针(Create the graphic Compass)**: 指导如何设计和实现一个简单的指南针UI。 - **创建GPS(Create the GPS)**: 展示如何利用Android设备内置的GPS传感器来获取位置信息。 - **GPS位置更改...

    RemoteAndroidForth:通过远程BT repl控制Forth口译员

    远程Android Forth REPL 该库允许用户与在远程计算机上运行的Forth系统进行通信。 对Forth和现有Java之间的互操作有很好的支持 动机 需要加快FIRST Tech Challenge...----remote BT connection---&gt; Bluetooth Cl

    DatabaseConnection_NodeJS:使用NodeJS连接到多个连接的代码

    不要选择安装Mongo Compass。 运行MongoDB 打开命令提示符,然后导航到MongoDB bin文件夹。 在命令提示符下键入mongod以启动服务器。 要查看当前系统上有哪些数据库,请打开一个新的命令提示符,导航到与上述相同...

    20 Recipes for Programming PhoneGap

    - **实现方式**:使用`navigator.connection`对象来检查网络类型和连接状态。 ### 五、检测网络状态变化 - **知识点说明**:当网络状态发生变化时(如从Wi-Fi切换到移动数据),应用需要做出响应。 - **实现方式**...

    开源企业搜索引擎SOLR的应用教程

    3. **基于Compass+Lucene实现站内搜索**:适用于需要对数据库中的应用数据进行索引的场景,尤其是当需要替换传统SQL查询中的`LIKE '%expression%'`时。 最终,**Apache Solr**成为许多企业的首选,因为它不仅提供了...

    Date-a-Face:CS 411 最佳组

    如果还没有,请确保安装了 node、bower、ruby、compass 和 npm。 通过运行安装依赖项: npm install bower install 启动mysql并启动数据库(见下文)。 mysql -u root -p 启动服务器 node server.js 启动应用...

    i3ipc-rs:用于通过其IPC接口控制i3-wm的Rust库

    i3ipc-rs 用于通过其控制i3-wm... let mut connection = I3Connection :: connect (). unwrap (); // request and print the i3 version println! ( "{}" , connection. get_version (). unwrap ().human_readabl

    TNet:面向目标的情感分类的转换网络(ACL 2018)

    THEANO_FLAGS="device=cuda0, optimizer=fast_compile" python main.py -ds_name [YOUR_DATASET_NAME] -connection_type [AS|LF] 环境 操作系统:REHL Server 6.4(Santiago) GPU:NVIDIA GTX 1080 CUDA:9.2 ...

Global site tag (gtag.js) - Google Analytics