我是一个compass的初学者,做了一个compass的存储索引的例子,但是运行时却总是报下面的错,不知是什么原因:
2008-05-09 10:14:05,140 ERROR [org.compass.core.lucene.engine.transaction.ReadCommittedTransaction] - <Failed to read index reader properties>
java.lang.NoSuchFieldException: directoryOwner
at java.lang.Class.getDeclaredField(Unknown Source)
at org.compass.core.util.FieldInvoker.prepare(FieldInvoker.java:46)
at org.compass.core.lucene.engine.transaction.ReadCommittedTransaction.<clinit>(ReadCommittedTransaction.java:226)
at org.compass.core.lucene.engine.LuceneSearchEngine.begin(LuceneSearchEngine.java:205)
at org.compass.spring.transaction.SpringSyncTransaction.begin(SpringSyncTransaction.java:68)
at org.compass.spring.transaction.SpringSyncTransactionFactory.doBeginTransaction(SpringSyncTransactionFactory.java:72)
at org.compass.core.transaction.AbstractTransactionFactory.beginTransaction(AbstractTransactionFactory.java:74)
at org.compass.core.impl.DefaultCompassSession.beginTransaction(DefaultCompassSession.java:155)
at org.compass.core.CompassTemplate.execute(CompassTemplate.java:133)
at org.compass.core.CompassTemplate.execute(CompassTemplate.java:117)
at org.compass.core.impl.DefaultCompass$TransactionalSearchEngineIndexManager.verifyIndex(DefaultCompass.java:291)
at org.compass.core.lucene.engine.manager.ScheduledLuceneSearchEngineIndexManager.verifyIndex(ScheduledLuceneSearchEngineIndexManager.java:98)
at org.compass.core.impl.DefaultCompass.<init>(DefaultCompass.java:147)
at org.compass.core.impl.DefaultCompass.<init>(DefaultCompass.java:102)
at org.compass.core.impl.DefaultCompass.<init>(DefaultCompass.java:95)
at org.compass.core.config.CompassConfiguration.buildCompass(CompassConfiguration.java:191)
at org.compass.spring.LocalCompassBean.newCompass(LocalCompassBean.java:332)
at org.compass.spring.LocalCompassBean.afterPropertiesSet(LocalCompassBean.java:322)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1062)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1029)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:420)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:246)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:128)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:955)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:729)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:416)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:246)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:128)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:955)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:729)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:416)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:290)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:348)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:92)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:77)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:68)
at test.CompassTest.<clinit>(CompassTest.java:30)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at junit.framework.TestSuite.createTest(TestSuite.java:131)
at junit.framework.TestSuite.addTestMethod(TestSuite.java:114)
at junit.framework.TestSuite.<init>(TestSuite.java:75)
以下是配置文件:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="show_sql">true</prop>
</props>
</property>
<property name="mappingDirectoryLocations">
<list>
<value>model</value>
</list>
</property>
</bean>
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="articleDAO" class="dao.ArticleDAO">
<property name="hibernateTemplate">
<ref local="hibernateTemplate" />
</property>
</bean>
<bean id="authorDAO" class="dao.AuthorDAO">
<property name="hibernateTemplate">
<ref local="hibernateTemplate" />
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="compassConfiguration"
class="org.compass.core.config.CompassConfiguration" />
<bean id="annotationConfiguration"
class="org.compass.annotations.config.CompassAnnotationsConfiguration">
</bean>
<bean id="compass" class="org.compass.spring.LocalCompassBean">
<!-- 这里配置只用作建立索引的类 -->
<property name="classMappings">
<list>
<value>com.mobilesoft.esales.model.Article</value>
</list>
</property>
<property name="compassConfiguration"
ref="annotationConfiguration" />
<property name="compassSettings">
<props>
<prop key="compass.engine.connection">file:///D:/compass</prop>
<prop key="compass.transaction.factory">
org.compass.spring.transaction.SpringSyncTransactionFactory
</prop>
</props>
</property>
<property name="transactionManager" ref="transactionManager" />
</bean>
<bean id="compassTemplate"
class="org.compass.core.CompassTemplate">
<property name="compass">
<ref local="compass" />
</property>
</bean>
<bean id="hibernateGpsDevice"
class="org.compass.spring.device.hibernate.SpringHibernate3GpsDevice">
<property name="name">
<value>hibernateDevice</value>
</property>
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="compassGps" class="org.compass.gps.impl.SingleCompassGps"
init-method="start" destroy-method="stop">
<property name="compass" ref="compass" />
<property name="gpsDevices">
<list>
<ref local="hibernateGpsDevice" />
</list>
</property>
</bean>
<!-- 自动随Spring ApplicationContext启动而重建索引 sprindside 中的-->
<bean id="compassIndexBuilder" class="compass.CompassIndexBuilder"
lazy-init="false">
<property name="compassGps" ref="compassGps" />
<property name="buildIndex" value="true" />
<property name="lazyTime" value="10" />
</bean>
分享到:
相关推荐
Compass是基于Java的一个全文搜索引擎库,它为Java应用程序提供了与Lucene搜索引擎库的无缝集成。在SSH(Spring、Struts和Hibernate)...同时,Compass的易用性和灵活性使其成为Java开发中一个理想的全文搜索解决方案。
同时,你需要确保数据库中有一个用于存储索引的表。 4. **定义索引模型** Compass通过元数据(Metadata)来定义要索引的数据对象。这些元数据通常与ORM的实体类对应,定义了哪些字段应该被索引,以及如何进行分词...
Compass是一个基于Lucene的全文搜索引擎库,它简化了在Java应用中集成全文检索的功能。本教程将重点讲解如何使用SSH框架与Compass结合,实现在网站内的搜索分页功能。 首先,让我们深入了解SSH框架的每个组件: 1....
Compass是基于Apache Lucene的一个高级全文搜索引擎,它将Lucene的功能与持久化层相结合,使得数据库中的数据能够被快速检索。Compass的核心特性包括: 1. **ORM集成**:Compass可以与流行的ORM框架如Hibernate、...
Compass是一个开源的.NET和Java框架,它为应用程序提供了完整的文本搜索功能。该框架支持多种搜索引擎(如Elasticsearch, Solr等),使得开发人员能够在不深入学习特定搜索引擎的情况下,轻松地在其应用中集成高级的...
总结,Compass Annotation 是 Compass 框架中的一个重要特性,通过它我们可以方便地定义对象与搜索引擎索引之间的关系,简化了数据索引和检索的实现。同时,通过灵活的关联关系注解,可以处理复杂的对象关系映射,...
在这个项目中,Compass作为Lucene的一个高级封装,使得开发者能够更便捷地利用Lucene的功能。 SSH(Struts、Spring、Hibernate)是一个经典的Java Web开发框架组合。Struts是一个MVC(模型-视图-控制器)框架,负责...
通常,Compass会将索引存储在数据库中,这使得索引能够与持久化的数据保持同步,并且可以利用数据库的事务管理能力。运行这个脚本后,你将得到一个适配Compass的数据库环境,可以用于测试和学习。 `compass`可能是...
Compass 是一个基于 Lucene 的全文检索框架,它提供了一种高级的、面向对象的方式来管理和集成搜索引擎到你的应用程序中。在“compass2.1.4包”中,包含了 Compass 框架的版本 2.1.4,这个版本可能包含了性能优化、...
5. **元数据支持**:Compass允许在索引中存储额外的元数据,这在进行复杂查询或实现自定义索引策略时非常有用。 6. **插件系统**:Compass拥有丰富的插件体系,可以扩展其功能,如Gazetteer插件用于地理定位搜索,...
Compass是MongoDB的官方图形界面工具,它提供了一个用户友好的界面,用于可视化数据库和集合,帮助开发者和管理员进行数据探索、查询构建、性能分析以及基本的数据库管理。通过Compass,用户可以轻松地浏览和操作...
Compass 2.1.0 版本是这个库的一个重要版本,它优化了性能并修复了一些已知问题,使得在应用中集成和使用更加顺畅。在这个jar包中,你将找到所有必要的类和库,以便将搜索引擎功能集成到你的项目中。 Compass的...
在题目中提供的部分Java代码中,展示了一个名为`ProductInfo`的实体类,该类通过使用Compass注解实现了全文检索功能。 1. **实体类定义** ```java @Entity @Searchable public class ProductInfo implements ...
Compass 是基于 Lucene 构建的一个高级搜索引擎框架,它简化了 Lucene 的使用,并且提供了更多的特性,如自动索引、ORM 集成(Object-Relational Mapping)以及对多种持久化技术的支持,如 JPA、Hibernate 和 ...
- **Hibernate** 是一个 ORM 框架,可以将 Java 应用程序中的对象与数据库中的表格自动对应起来。 - **优点**:简化了数据库操作,提高了开发效率。 - **缺点**:虽然适合处理关系型数据库,但对于非关系型数据存储...
Compass全文搜索是一个基于Apache Lucene的高性能、易用的全文搜索引擎工具。Lucene是Java开发的开源库,它提供了文本分析、索引和搜索的基本功能。而Compass则在Lucene的基础上进行了封装,使得开发者可以更方便地...
MongoDB Compass 1.15.1是这个系列的一个版本,它无需安装,可以直接运行,这在许多情况下非常便捷,特别是对于那些希望快速试用或在不同环境中使用的用户。 MongoDB是一款开源的文档型数据库,它是NoSQL数据库的...
Compass有一个强大的插件系统,可以扩展其功能,例如支持更多的数据源、新的存储后端或者自定义分析器。 10. **最佳实践** 使用Compass时,应考虑优化索引策略,合理分配内存,避免全表扫描,以及选择合适的分析...
假设在一个基于SSH(Spring+Struts+Hibernate)架构的项目中使用Compass框架,首先需要在项目中加入Compass相关的jar包,然后对实体bean进行标注,例如: ```java @Searchable public class Product implements ...
Compass是一个开源项目,它将Lucene的功能封装起来,提供了一套面向对象的API,简化了在Java应用中集成全文搜索引擎的过程。Compass不仅支持对关系数据库中的数据进行索引,还能与ORM框架如Hibernate、JPA等无缝集成...