При добавлении сериализатора не создаются документы lucene

Я создал индекс lucene в gfsh, используя следующую команду

create lucene index --name=myLucIndex --region=myRegion --field=title --analyzer=org.apache.lucene.analysis.en.EnglishAnalyzer --serializer=a.b.c.MyLatLongSerializer

Мой сериализатор выглядит следующим образом:

class MyLatLongSerializer implements LuceneSerializer<Book> {
@Override
  public Collection<Document> toDocuments(LuceneIndex luceneIndex, Book book) {

    logger.debug("inside custom lucene serializer ...");

    // Writes fields of Book into a document
    Document newDocument = new Document();
    newDocument.add(new StoredField("title", book.getTitle()));
    newDocument.add(new LatLonPoint("location", book.getLatitude(), book.getLongitude()));

    return Collections.singleton(newDocument);
  }
} 

Мой файл конфигурации весенней загрузки выглядит следующим образом:


@Configuration
@ClientCacheApplication
@EnableClusterDefinedRegions(clientRegionShortcut = ClientRegionShortcut.CACHING_PROXY)
@EnableIndexing
public class BookConfiguration {

  @Bean(name = "bookGemfireCache")
  ClientCacheConfigurer bookGemfireCache(
      @Value("${spring.data.geode.locator.host:localhost}") String hostname,
      @Value("${spring.data.geode.locator.port:10334}") int port) {

    // Get clientCache
  }

  @Bean
  Region<Long, Book> bookRegion(ClientCache clientCache) {
    logger.debug("inside regions ...");
    return clientCache.getRegion("myRegion");
  }

  @Bean
  LuceneService ukBikesLuceneService(ClientCache clientCache) {
    return LuceneServiceProvider.get(clientCache);
  }
}

Я загружаю данные в геодез, используя следующий код:

  bookRegion.putAll(Map<bookId, Book>);

describe lucene index --name=myLucIndex --region=myRegionзатем документ № 0, но когда я создаю индекс lucene, используя следующую команду

create lucene index --name=myLucIndex --region=myRegion --field=title
--analyzer=org.apache.lucene.analysis.en.EnglishAnalyzer

затем снова загрузите данные, запустите

  describe lucene index --name=myLucIndex --region=myRegion 

затем документ № 96.

Я использую spring data geode 2.1.8.RELEASE, geode-core 1.9.0, lucene-core 8.2.0

Что мне здесь не хватает?

1 ответ

Apache Geode в настоящее время использует Apache Lucene версии 6.6.6, а вы используетеlucene-core 8.2.0, который не имеет обратной совместимости с основными старыми версиями, такими как 6.X, вот почему вы получаете эти исключения. Все должно работать нормально, если вы используете версию Lucene, поставляемую с Geode.

В качестве примечания: в настоящее время предпринимаются попытки обновить версию Lucene, используемую Geode, вы можете следить за прогрессом через GEODE-7039.

Надеюсь это поможет.

Другие вопросы по тегам