Ce contenu n'est pas disponible dans la langue sélectionnée.
2.4. Configure Indexing
2.4.1. Configure Indexing in Library Mode Using XML Copier lienLien copié sur presse-papiers!
<indexing ... /> element to the cache configuration in the Infinispan core configuration file, and optionally pass additional properties in the embedded Lucene-based Query API engine. For example:
Example 2.3. Configuring Indexing Using XML in Library Mode
<?xml version="1.0" encoding="UTF-8"?>
<infinispan
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:config:6.4
http://www.infinispan.org/schemas/infinispan-config-6.4.xsd"
xmlns="urn:infinispan:config:6.4">
<replicated-cache>
<indexing enabled="true">
<properties>
<property name="default.directory_provider" value="ram" />
</properties>
</indexing>
</replicated-cache>
</infinispan>
2.4.2. Configure Indexing Programmatically Copier lienLien copié sur presse-papiers!
Author, which is stored in the grid and made searchable via two properties, without annotating the class.
Example 2.4. Configure Indexing Programmatically
import java.util.Properties;
import org.hibernate.search.cfg.SearchMapping;
import org.infinispan.Cache;
import org.infinispan.configuration.cache.Configuration;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.manager.DefaultCacheManager;
import org.infinispan.query.CacheQuery;
import org.infinispan.query.Search;
import org.infinispan.query.SearchManager;
import org.infinispan.query.dsl.Query;
import org.infinispan.query.dsl.QueryBuilder;
[...]
SearchMapping mapping = new SearchMapping();
mapping.entity(Author.class).indexed().providedId()
.property("name", ElementType.METHOD).field()
.property("surname", ElementType.METHOD).field();
Properties properties = new Properties();
properties.put(org.hibernate.search.Environment.MODEL_MAPPING, mapping);
properties.put("[other.options]", "[...]");
Configuration infinispanConfiguration = new ConfigurationBuilder()
.indexing()
.enable()
.withProperties(properties)
.build();
DefaultCacheManager cacheManager = new DefaultCacheManager(infinispanConfiguration);
Cache<Long, Author> cache = cacheManager.getCache();
SearchManager sm = Search.getSearchManager(cache);
Author author = new Author(1, "FirstName", "Surname");
cache.put(author.getId(), author);
QueryBuilder qb = sm.buildQueryBuilderForClass(Author.class).get();
Query q = qb.keyword().onField("name").matching("FirstName").createQuery();
CacheQuery cq = sm.getQuery(q, Author.class);
Assert.assertEquals(cq.getResultSize(), 1);
2.4.3. Configure the Index in Remote Client-Server Mode Copier lienLien copié sur presse-papiers!
- NONE
- LOCAL = indexLocalOnly="true"
- ALL = indexLocalOnly="false"
Example 2.5. Configuration in Remote Client-Server Mode
<indexing index="LOCAL">
<property name="default.directory_provider" value="ram" />
<!-- Additional configuration information here -->
</indexing>
By default the Lucene caches will be created as local caches; however, with this configuration the Lucene search results are not shared between nodes in the cluster. To prevent this define the caches required by Lucene in a clustered mode, as seen in the following configuration snippet:
Example 2.6. Configuring the Lucene cache in Remote Client-Server Mode
<cache-container name="clustered" default-cache="repltestcache">
[...]
<replicated-cache name="LuceneIndexesMetadata" mode="SYNC">
<transaction mode="NONE"/>
<indexing index="NONE"/>
</replicated-cache>
<distributed-cache name="LuceneIndexesData" mode="SYNC">
<transaction mode="NONE"/>
<indexing index="NONE"/>
</distributed-cache>
<replicated-cache name="LuceneIndexesLocking" mode="SYNC">
<transaction mode="NONE"/>
<indexing index="NONE"/>
</replicated-cache>
[...]
</cache-container>
2.4.4. Rebuilding the Index Copier lienLien copié sur presse-papiers!
- The definition of what is indexed in the types has changed.
- A parameter affecting how the index is defined, such as the
Analyserchanges. - The index is destroyed or corrupted, possibly due to a system administration error.
MassIndexer and start it as follows:
SearchManager searchManager = Search.getSearchManager(cache);
searchManager.getMassIndexer().start();