Hi All
I am using hibernate core 3.2, spring 2.0, struts 1.3, with hibernate search 3.0 jar. my database is mysql 5.0.
I want to create full text search index first time for a database table with 277917 records.
I have put below parameters in my eclipse.ini file but it still throws Out of Memory exception.
-vmargs
-Xms1024M
-Xmx1024M
Any idea how to resolve it?
I have set hibernate.search.worker.batch_size = 100 in hibernate property, and in hibernate domain class i have set @field annotation to only 2 fields.
public void createFirstTimeIndex(){
Session session = getHibernateTemplate().getSessionFactory().openSession();
FullTextSession fullTextSession = Search.createFullTextSession(session);
Transaction transaction = fullTextSession.beginTransaction();
fullTextSession.setFlushMode(FlushMode.MANUAL);
fullTextSession.setCacheMode(CacheMode.IGNORE);
transaction = fullTextSession.beginTransaction();
// Scrollable results will avoid loading too many objects in memory
ScrollableResults results = fullTextSession.createCriteria( myTable.class ).scroll( ScrollMode.FORWARD_ONLY );
int index = 0;
while( results.next() ) {
index++;
fullTextSession.index( results.get(0) ); //index each element
if (index % 100 == 0)
{
fullTextSession.clear();
session.clear(); //clear every batchSize since the queue is processed
}
}
transaction.commit();
fullTextSession.close();
session.close();
}
<bean id="myhibernateProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="properties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySqlDialect</prop>
<prop key="hibernate.query.substitutions">true 'T', false 'F'</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.max_fetch_depth">1</prop>
<prop key="hibernate.use_sql_comments">true</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
<prop key="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</prop>
<prop key="hibernate.search.default.indexBase">c:\\lucene\\indexes</prop>
<prop key="hibernate.search.worker.batch_size">100</prop>
</props>
</property>
</bean>
<!-- LocalSessionFactoryBean From spring jar file -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" >
<ref bean="jndi_mysql_datasrc" />
</property>
<property name="hibernateProperties" >
<ref bean="myhibernateProperties" />
</property>
<property name="mappingDirectoryLocations" >
<list>
<value>classpath:/hbm </value>
</list>
</property>
<property name="eventListeners" >
<map>
<entry key="post-insert">
<bean class="org.hibernate.search.event.FullTextIndexEventListener"></bean>
</entry>
<entry key="post-update">
<bean class="org.hibernate.search.event.FullTextIndexEventListener"></bean>
</entry>
<entry key="post-delete">
<bean class="org.hibernate.search.event.FullTextIndexEventListener"></bean>
</entry>
</map>
</property>
</bean>
|