Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

 

<cache
    xsi:schemaLocation="http://geode.apache.org/schema/cache
        http://geode.apache.org/schema/cache/cache-1.0.xsd
        http://geode.apache.org/schema/lucene
        http://geode.apache.org/schema/lucene/lucene-1.0.xsd"
    version="1.0">
 
    <region name="region" refid="PARTITION">
        <lucene:index name="index">
           <lucene:field name="a" analyzer="org.apache.lucene.analysis.core.KeywordAnalyzer"/>
           <lucene:field name="b" analyzer="org.apache.lucene.analysis.core.SimpleAnalyzer"/>
           <lucene:field name="c" analyzer="org.apache.lucene.analysis.standard.ClassicAnalyzer"/>
           <lucene:serializer>
             <class-name>org.apache.geode.cache.lucene.FlatFormatSerializer</class-name>
           </lucene:serializer>
       </lucene:index>
    </region>
</cache>
 

 

 

We will also provide a built-in implementation for LuceneSerializer called FlatFormatSerializer(). With this example serializer users can specify nested fields using the syntax fieldnameAtLevel1.fieldnameAtLevel2 for both indexing and querying. 

...

Code Block
// Get LuceneService
LuceneService luceneService = LuceneServiceProvider.get(cache);

// Create Index on fields, some are fields in nested objects:
luceneService.createIndexFactory().setLuceneSerializer(new FlatFormatSerializer()) /* an out-of-box LuceneSerializer implementation */
      .addField("name").addField("contacts.name").addField("contacts.email").addField("contacts.address").addField("contacts.homepage.title")
      .create("customerIndex", "Customer");

// Now to create region
Region CustomerRegion = ((Cache)cache).createRegionFactory(shortcut).create("Customer");


gfsh command line:


Code Block
gfsh create lucene index --name=customerIndex --region=/Customer --field=name,contacts.name,contacts.email,contacts.address,contacts.homepage.title --serializer=org.apache.geode.cache.lucene.FlatFormatSerializer

 

The syntax for querying the nested field is the same as for a top level field, but with the additional qualifying parent field name, such as "contacts.name:tzhou11*". This distinguishes which "name" field when there can potentially be more than one 'name' field at different hierarchical levels in the object.

...