SlideShare a Scribd company logo
1 of 13
1
Apache Geode の Apache Lucene
Integration を試してみた
@quitada
2018/3/27
2
「Apache Lucene」ってそもそ
も何でしたっけ?
Apache Lucene とは?
 英語のウィキペディアサイトの説明参考訳: Apache Lucene は無
償かつオープンソースの情報抽出ソフトウェアライブラリーで、
当初 Doug Cutting 氏により全て Java で記述されたものである。
Apache ソフトウェア財団により保守されており、Apache ソフト
ウェアライセンスの元リリースされている。
 ま、全文テキスト検索エンジンと関連
ソフトウェアからなり、主に Web 検索
やドキュメント検索に使用されている、
的な?
3
4
では、Apache Geode の機能で
ある「Apache Lucene
Integration」って何ですか?
Apache Lucene Integration とは?(1/2)
 英語ドキュメントの説明参考訳:Apache Lucene Integration について以下の
ように記載されています。
– Geode に格納されているデータに対して Lucene インデックスの作成を可能とす
る
– メモリ上に Lucene インデックスを格納するため、Geode の高可用性機能を用い
て Lucene インデックスの高可用性を担保する
– 実データと Lucene インデックスを同一のローカルノード上に配置する
– 永続化リージョンの場合、Lucene インデックスもディスクに永続化する
– Lucene インデックスは、書き込み遅延の影響を最小化するため非同期で更新す
る
– Lucene インデックスをパーティショニングすることで、スケーラビリティーを
確保
5
Apache Lucene Integration とは?(2/2)
 まぁ、インメモリデータグリッド技術でもってリージョン
データに対してサーチインデックスを作成可能とする
Hadoop の代替実装のようなもので、リージョンデータに対
して Lucene インデックス作成並びに全文検索を可能とする
ツールや API を提供する、的な?
 ちなみにこの機能は、Apache Geode 正式リリース前から開
発されてます。
– 機能自体は、Apache Geode 1.2/Pivotal GemFire 9.1 から正式リリース
されてます。
6
7
デモンストレーション:
文字列のフィールド変数をもつ
カスタムオブジェクトを、
Collection ベースのフィールド
変数をもつオブジェクトに入れ
子にしてリージョンに put し、
当該 Collection オブジェクト内
のカスタムオブジェクトに対し
て Lucene インデックスを作成、
検索してみましょう!
デモンストレーション(1/3)
 検索対象データモデル
– Collection ベースのフィールド myArrayList にネストして格納されているカスタムオブジェクトの
文字列フィールド name を検索対象とするため Lucene インデックスを作成
8
リージョン
キー バ
リュー
: :
Collection ベースの
フィールドをもつ
オブジェクト
Collection myArrayList;
:
検索対象のカスタム
オブジェクト
Integer id;
String name;
String …
:
デモンストレーション(2/3)
 Geode クラスターを gfsh を使って普通に構築します: 例えば、Locator x1、Cache Server x3 とか
 gfsh にて、現状、検索対象リージョン作成前に Lucene インデックスを作成(GEODE-3924* で既存リー
ジョンに Lucene インデックスが作成できるよう対応中 – 2018 年 3 月現在)
– Collection でネストされたオブジェクトにインデックス作成するため、FlatFormatSerializer を指定(Apache Geode
1.4 よりサポート)
 検索対象リージョン作成: パーティションリージョンのみサポート
9
gfsh>create lucene index --name=myLuceneIndex --region=/Customer --
field=myArrayList.name --
serializer=org.apache.geode.cache.lucene.FlatFormatSerializer
gfsh>create region --name=/Customer --type=PARTITION_REDUNDANT
* = https://issues.apache.org/jira/browse/GEODE-3924
デモンストレーション(3/3)
 検索対象となるカスタムオブジェクトを保持する、Collection ベースの
フィールドをもつオブジェクトをリージョンに put する。
 検索対象カスタムオブジェクトのフィールド(name)を gfsh から検索
10
gfsh>search lucene --name=myLuceneIndex --region=/Customer --queryString="Yamada
Taro Jiro Yamashita*" --defaultField=myArrayList.name
参考: Apache Lucene Integration アーキテクチャー
 https://twitter.com/metatype/status/970790021245517825
11
2018 年 3 月現在、
これはまだない
(GEODE-
3924)
Apache Geode 1.0
から PartitionListener
に追加されたコール
バックメソッド
参考:日本語文字列への Lucene インデックス生成
 形態素解析が必要
– Apache Lucene 付属の JapaneseAnalyzer 等を適用
– Apache Geode には JapaneseAnalyzer は含まれていないので、
Apache Lucene(2018 年 3 月現在、Apache Geode 同梱の v6.4.1)付
属のものを適用:lucene-analyzers-kuromoji-6.4.1.jar
 gfsh オペレーション
12
gfsh>deploy --jar=/path/to/lucene-analyzers-kuromoji-6.4.1.jar
gfsh>create lucene index --name=myLuceneIndex --region=/Customer --
field=myArrayList.name --
serializer=org.apache.geode.cache.lucene.FlatFormatSerializer --
analyzer=org.apache.lucene.analysis.ja.JapaneseAnalyzer
13
もちろん、Java API や
cache.xml ファイルで Lucene
インデックス作成可能です。ま
た、Java API を使って検索す
ることも可能です。

More Related Content

What's hot

H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編irix_jp
 
JOSUG Meetup 28th Heat 101
JOSUG Meetup 28th Heat 101JOSUG Meetup 28th Heat 101
JOSUG Meetup 28th Heat 101irix_jp
 
OpenStackを一発でデプロイ – Juju/MAAS - OpenStack最新情報セミナー 2015年2月
OpenStackを一発でデプロイ – Juju/MAAS  - OpenStack最新情報セミナー 2015年2月OpenStackを一発でデプロイ – Juju/MAAS  - OpenStack最新情報セミナー 2015年2月
OpenStackを一発でデプロイ – Juju/MAAS - OpenStack最新情報セミナー 2015年2月VirtualTech Japan Inc.
 
OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化Hideki Saito
 
Auto tiering and Versioning of CLOUDIAN HyperStore
Auto tiering and Versioning of CLOUDIAN HyperStoreAuto tiering and Versioning of CLOUDIAN HyperStore
Auto tiering and Versioning of CLOUDIAN HyperStoreCLOUDIAN KK
 
Pyats Introduction
Pyats IntroductionPyats Introduction
Pyats IntroductionToru Okatsu
 
OpenCenterによるOpenStack自動構築
OpenCenterによるOpenStack自動構築OpenCenterによるOpenStack自動構築
OpenCenterによるOpenStack自動構築guchi_hiro
 
OpenStack Grizzly Release
OpenStack Grizzly ReleaseOpenStack Grizzly Release
OpenStack Grizzly ReleaseAkira Yoshiyama
 
ConoHaオブジェクトストレージ 利用ケース
ConoHaオブジェクトストレージ 利用ケースConoHaオブジェクトストレージ 利用ケース
ConoHaオブジェクトストレージ 利用ケースJunichi Noda
 
20141111 juniper open_contrailday_submit
20141111 juniper open_contrailday_submit20141111 juniper open_contrailday_submit
20141111 juniper open_contrailday_submitTakeshi Nakajima
 
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002Takeshi Kuramochi
 
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)Interop2014 - OpenStackの概要と最新技術動向(Icehouse)
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)irix_jp
 
Ansibleで味わうHelion OpenStack
Ansibleで味わうHelion OpenStackAnsibleで味わうHelion OpenStack
Ansibleで味わうHelion OpenStackMasataka Tsukamoto
 
Customize the openstack horizon as you like
Customize the openstack horizon as you likeCustomize the openstack horizon as you like
Customize the openstack horizon as you likeTakahiro Shida
 

What's hot (15)

H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
 
JOSUG Meetup 28th Heat 101
JOSUG Meetup 28th Heat 101JOSUG Meetup 28th Heat 101
JOSUG Meetup 28th Heat 101
 
OpenStackを一発でデプロイ – Juju/MAAS - OpenStack最新情報セミナー 2015年2月
OpenStackを一発でデプロイ – Juju/MAAS  - OpenStack最新情報セミナー 2015年2月OpenStackを一発でデプロイ – Juju/MAAS  - OpenStack最新情報セミナー 2015年2月
OpenStackを一発でデプロイ – Juju/MAAS - OpenStack最新情報セミナー 2015年2月
 
OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化
 
Auto tiering and Versioning of CLOUDIAN HyperStore
Auto tiering and Versioning of CLOUDIAN HyperStoreAuto tiering and Versioning of CLOUDIAN HyperStore
Auto tiering and Versioning of CLOUDIAN HyperStore
 
Pyats Introduction
Pyats IntroductionPyats Introduction
Pyats Introduction
 
OpenCenterによるOpenStack自動構築
OpenCenterによるOpenStack自動構築OpenCenterによるOpenStack自動構築
OpenCenterによるOpenStack自動構築
 
OpenStack Grizzly Release
OpenStack Grizzly ReleaseOpenStack Grizzly Release
OpenStack Grizzly Release
 
ConoHaオブジェクトストレージ 利用ケース
ConoHaオブジェクトストレージ 利用ケースConoHaオブジェクトストレージ 利用ケース
ConoHaオブジェクトストレージ 利用ケース
 
OpenStack構築手順書 Kilo版
OpenStack構築手順書 Kilo版OpenStack構築手順書 Kilo版
OpenStack構築手順書 Kilo版
 
20141111 juniper open_contrailday_submit
20141111 juniper open_contrailday_submit20141111 juniper open_contrailday_submit
20141111 juniper open_contrailday_submit
 
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
 
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)Interop2014 - OpenStackの概要と最新技術動向(Icehouse)
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)
 
Ansibleで味わうHelion OpenStack
Ansibleで味わうHelion OpenStackAnsibleで味わうHelion OpenStack
Ansibleで味わうHelion OpenStack
 
Customize the openstack horizon as you like
Customize the openstack horizon as you likeCustomize the openstack horizon as you like
Customize the openstack horizon as you like
 

Similar to Apache Geode の Apache Lucene Integration を試してみた

Getting Started Japanese Search and Calculate Similarity with Apache Lucene
Getting Started Japanese Search and Calculate Similarity with Apache LuceneGetting Started Japanese Search and Calculate Similarity with Apache Lucene
Getting Started Japanese Search and Calculate Similarity with Apache LuceneEiji Shinohara
 
Tour of distributed systems 1 - ZooKeeper
Tour of distributed systems 1 - ZooKeeperTour of distributed systems 1 - ZooKeeper
Tour of distributed systems 1 - ZooKeeperChris Birchall
 
Talend Studioのビッグデータ対応機能のご紹介 - Hadoop, HDFS, Hive, HBase, Spark, NoSQL
Talend Studioのビッグデータ対応機能のご紹介 - Hadoop, HDFS, Hive, HBase, Spark, NoSQLTalend Studioのビッグデータ対応機能のご紹介 - Hadoop, HDFS, Hive, HBase, Spark, NoSQL
Talend Studioのビッグデータ対応機能のご紹介 - Hadoop, HDFS, Hive, HBase, Spark, NoSQLQlikPresalesJapan
 
Next-L Enju 開発ワークショップ #5
Next-L Enju 開発ワークショップ #5Next-L Enju 開発ワークショップ #5
Next-L Enju 開発ワークショップ #5Kosuke Tanabe
 
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API DragonJOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API DragonNaoto Gohko
 
CloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/SwiftCloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/Swiftirix_jp
 
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かすOpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かすKUNITO Atsunori
 
第1回 AIR Native Extension Lab 研究報告会
第1回 AIR Native Extension Lab 研究報告会第1回 AIR Native Extension Lab 研究報告会
第1回 AIR Native Extension Lab 研究報告会Sadao Tokuyama
 

Similar to Apache Geode の Apache Lucene Integration を試してみた (12)

Getting Started Japanese Search and Calculate Similarity with Apache Lucene
Getting Started Japanese Search and Calculate Similarity with Apache LuceneGetting Started Japanese Search and Calculate Similarity with Apache Lucene
Getting Started Japanese Search and Calculate Similarity with Apache Lucene
 
APACHE HTTP SERVER
APACHE HTTP SERVERAPACHE HTTP SERVER
APACHE HTTP SERVER
 
Tour of distributed systems 1 - ZooKeeper
Tour of distributed systems 1 - ZooKeeperTour of distributed systems 1 - ZooKeeper
Tour of distributed systems 1 - ZooKeeper
 
Hadoop 基礎
Hadoop 基礎Hadoop 基礎
Hadoop 基礎
 
Talend Studioのビッグデータ対応機能のご紹介 - Hadoop, HDFS, Hive, HBase, Spark, NoSQL
Talend Studioのビッグデータ対応機能のご紹介 - Hadoop, HDFS, Hive, HBase, Spark, NoSQLTalend Studioのビッグデータ対応機能のご紹介 - Hadoop, HDFS, Hive, HBase, Spark, NoSQL
Talend Studioのビッグデータ対応機能のご紹介 - Hadoop, HDFS, Hive, HBase, Spark, NoSQL
 
Next-L Enju 開発ワークショップ #5
Next-L Enju 開発ワークショップ #5Next-L Enju 開発ワークショップ #5
Next-L Enju 開発ワークショップ #5
 
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API DragonJOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
JOSUG2014 OpenStack 4th birthday party in Japan; the way of OpenStack API Dragon
 
Yahoo! JAPANでのHadoop利用について
Yahoo! JAPANでのHadoop利用についてYahoo! JAPANでのHadoop利用について
Yahoo! JAPANでのHadoop利用について
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
CloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/SwiftCloudStack Ecosystem Day - OpenStack/Swift
CloudStack Ecosystem Day - OpenStack/Swift
 
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かすOpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かす
 
第1回 AIR Native Extension Lab 研究報告会
第1回 AIR Native Extension Lab 研究報告会第1回 AIR Native Extension Lab 研究報告会
第1回 AIR Native Extension Lab 研究報告会
 

More from Akihiro Kitada

How to configure the cluster based on Multi-site (WAN) configuration
How to configure the clusterbased on Multi-site (WAN) configurationHow to configure the clusterbased on Multi-site (WAN) configuration
How to configure the cluster based on Multi-site (WAN) configurationAkihiro Kitada
 
Reactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみた
Reactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみたReactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみた
Reactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみたAkihiro Kitada
 
〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!Akihiro Kitada
 
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!Akihiro Kitada
 
Apache Calcite の Apache Geode Adapter を弄った
Apache Calcite の Apache Geode Adapter を弄ったApache Calcite の Apache Geode Adapter を弄った
Apache Calcite の Apache Geode Adapter を弄ったAkihiro Kitada
 
Grafana を使った Apache Geode クラスター監視
Grafana を使った Apache Geode クラスター監視Grafana を使った Apache Geode クラスター監視
Grafana を使った Apache Geode クラスター監視Akihiro Kitada
 
〜Apache Geode 入門 Multi-site(WAN)構成による クラスター連携
〜Apache Geode 入門 Multi-site(WAN)構成によるクラスター連携〜Apache Geode 入門 Multi-site(WAN)構成によるクラスター連携
〜Apache Geode 入門 Multi-site(WAN)構成による クラスター連携Akihiro Kitada
 
My first reactive programming - To deliver a deathblow “Shoryuken” with using...
My first reactive programming - To deliver a deathblow “Shoryuken” with using...My first reactive programming - To deliver a deathblow “Shoryuken” with using...
My first reactive programming - To deliver a deathblow “Shoryuken” with using...Akihiro Kitada
 
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!Akihiro Kitada
 
〜Apache Geode 入門 gfsh によるクラスター構築・管理
〜Apache Geode 入門 gfsh によるクラスター構築・管理〜Apache Geode 入門 gfsh によるクラスター構築・管理
〜Apache Geode 入門 gfsh によるクラスター構築・管理Akihiro Kitada
 
はじめての Cloud Foundry: .NET アプリケーションのはじめ方
はじめての Cloud Foundry: .NET アプリケーションのはじめ方はじめての Cloud Foundry: .NET アプリケーションのはじめ方
はじめての Cloud Foundry: .NET アプリケーションのはじめ方Akihiro Kitada
 
Apache Geode で始める Spring Data Gemfire
Apache Geode で始めるSpring Data GemfireApache Geode で始めるSpring Data Gemfire
Apache Geode で始める Spring Data GemfireAkihiro Kitada
 
Reactor によるデータインジェスチョン
Reactor によるデータインジェスチョンReactor によるデータインジェスチョン
Reactor によるデータインジェスチョンAkihiro Kitada
 

More from Akihiro Kitada (13)

How to configure the cluster based on Multi-site (WAN) configuration
How to configure the clusterbased on Multi-site (WAN) configurationHow to configure the clusterbased on Multi-site (WAN) configuration
How to configure the cluster based on Multi-site (WAN) configuration
 
Reactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみた
Reactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみたReactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみた
Reactive Streams に基づく非同期処理プログラミング 〜 Reactor を使ってみた
 
〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
 
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
 
Apache Calcite の Apache Geode Adapter を弄った
Apache Calcite の Apache Geode Adapter を弄ったApache Calcite の Apache Geode Adapter を弄った
Apache Calcite の Apache Geode Adapter を弄った
 
Grafana を使った Apache Geode クラスター監視
Grafana を使った Apache Geode クラスター監視Grafana を使った Apache Geode クラスター監視
Grafana を使った Apache Geode クラスター監視
 
〜Apache Geode 入門 Multi-site(WAN)構成による クラスター連携
〜Apache Geode 入門 Multi-site(WAN)構成によるクラスター連携〜Apache Geode 入門 Multi-site(WAN)構成によるクラスター連携
〜Apache Geode 入門 Multi-site(WAN)構成による クラスター連携
 
My first reactive programming - To deliver a deathblow “Shoryuken” with using...
My first reactive programming - To deliver a deathblow “Shoryuken” with using...My first reactive programming - To deliver a deathblow “Shoryuken” with using...
My first reactive programming - To deliver a deathblow “Shoryuken” with using...
 
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
【古いスライド】〜僕の初めてのリアクティブプログラミング Reactor を使ってリアクティブに昇龍拳を繰り出してみた!
 
〜Apache Geode 入門 gfsh によるクラスター構築・管理
〜Apache Geode 入門 gfsh によるクラスター構築・管理〜Apache Geode 入門 gfsh によるクラスター構築・管理
〜Apache Geode 入門 gfsh によるクラスター構築・管理
 
はじめての Cloud Foundry: .NET アプリケーションのはじめ方
はじめての Cloud Foundry: .NET アプリケーションのはじめ方はじめての Cloud Foundry: .NET アプリケーションのはじめ方
はじめての Cloud Foundry: .NET アプリケーションのはじめ方
 
Apache Geode で始める Spring Data Gemfire
Apache Geode で始めるSpring Data GemfireApache Geode で始めるSpring Data Gemfire
Apache Geode で始める Spring Data Gemfire
 
Reactor によるデータインジェスチョン
Reactor によるデータインジェスチョンReactor によるデータインジェスチョン
Reactor によるデータインジェスチョン
 

Apache Geode の Apache Lucene Integration を試してみた

  • 1. 1 Apache Geode の Apache Lucene Integration を試してみた @quitada 2018/3/27
  • 3. Apache Lucene とは?  英語のウィキペディアサイトの説明参考訳: Apache Lucene は無 償かつオープンソースの情報抽出ソフトウェアライブラリーで、 当初 Doug Cutting 氏により全て Java で記述されたものである。 Apache ソフトウェア財団により保守されており、Apache ソフト ウェアライセンスの元リリースされている。  ま、全文テキスト検索エンジンと関連 ソフトウェアからなり、主に Web 検索 やドキュメント検索に使用されている、 的な? 3
  • 4. 4 では、Apache Geode の機能で ある「Apache Lucene Integration」って何ですか?
  • 5. Apache Lucene Integration とは?(1/2)  英語ドキュメントの説明参考訳:Apache Lucene Integration について以下の ように記載されています。 – Geode に格納されているデータに対して Lucene インデックスの作成を可能とす る – メモリ上に Lucene インデックスを格納するため、Geode の高可用性機能を用い て Lucene インデックスの高可用性を担保する – 実データと Lucene インデックスを同一のローカルノード上に配置する – 永続化リージョンの場合、Lucene インデックスもディスクに永続化する – Lucene インデックスは、書き込み遅延の影響を最小化するため非同期で更新す る – Lucene インデックスをパーティショニングすることで、スケーラビリティーを 確保 5
  • 6. Apache Lucene Integration とは?(2/2)  まぁ、インメモリデータグリッド技術でもってリージョン データに対してサーチインデックスを作成可能とする Hadoop の代替実装のようなもので、リージョンデータに対 して Lucene インデックス作成並びに全文検索を可能とする ツールや API を提供する、的な?  ちなみにこの機能は、Apache Geode 正式リリース前から開 発されてます。 – 機能自体は、Apache Geode 1.2/Pivotal GemFire 9.1 から正式リリース されてます。 6
  • 7. 7 デモンストレーション: 文字列のフィールド変数をもつ カスタムオブジェクトを、 Collection ベースのフィールド 変数をもつオブジェクトに入れ 子にしてリージョンに put し、 当該 Collection オブジェクト内 のカスタムオブジェクトに対し て Lucene インデックスを作成、 検索してみましょう!
  • 8. デモンストレーション(1/3)  検索対象データモデル – Collection ベースのフィールド myArrayList にネストして格納されているカスタムオブジェクトの 文字列フィールド name を検索対象とするため Lucene インデックスを作成 8 リージョン キー バ リュー : : Collection ベースの フィールドをもつ オブジェクト Collection myArrayList; : 検索対象のカスタム オブジェクト Integer id; String name; String … :
  • 9. デモンストレーション(2/3)  Geode クラスターを gfsh を使って普通に構築します: 例えば、Locator x1、Cache Server x3 とか  gfsh にて、現状、検索対象リージョン作成前に Lucene インデックスを作成(GEODE-3924* で既存リー ジョンに Lucene インデックスが作成できるよう対応中 – 2018 年 3 月現在) – Collection でネストされたオブジェクトにインデックス作成するため、FlatFormatSerializer を指定(Apache Geode 1.4 よりサポート)  検索対象リージョン作成: パーティションリージョンのみサポート 9 gfsh>create lucene index --name=myLuceneIndex --region=/Customer -- field=myArrayList.name -- serializer=org.apache.geode.cache.lucene.FlatFormatSerializer gfsh>create region --name=/Customer --type=PARTITION_REDUNDANT * = https://issues.apache.org/jira/browse/GEODE-3924
  • 10. デモンストレーション(3/3)  検索対象となるカスタムオブジェクトを保持する、Collection ベースの フィールドをもつオブジェクトをリージョンに put する。  検索対象カスタムオブジェクトのフィールド(name)を gfsh から検索 10 gfsh>search lucene --name=myLuceneIndex --region=/Customer --queryString="Yamada Taro Jiro Yamashita*" --defaultField=myArrayList.name
  • 11. 参考: Apache Lucene Integration アーキテクチャー  https://twitter.com/metatype/status/970790021245517825 11 2018 年 3 月現在、 これはまだない (GEODE- 3924) Apache Geode 1.0 から PartitionListener に追加されたコール バックメソッド
  • 12. 参考:日本語文字列への Lucene インデックス生成  形態素解析が必要 – Apache Lucene 付属の JapaneseAnalyzer 等を適用 – Apache Geode には JapaneseAnalyzer は含まれていないので、 Apache Lucene(2018 年 3 月現在、Apache Geode 同梱の v6.4.1)付 属のものを適用:lucene-analyzers-kuromoji-6.4.1.jar  gfsh オペレーション 12 gfsh>deploy --jar=/path/to/lucene-analyzers-kuromoji-6.4.1.jar gfsh>create lucene index --name=myLuceneIndex --region=/Customer -- field=myArrayList.name -- serializer=org.apache.geode.cache.lucene.FlatFormatSerializer -- analyzer=org.apache.lucene.analysis.ja.JapaneseAnalyzer
  • 13. 13 もちろん、Java API や cache.xml ファイルで Lucene インデックス作成可能です。ま た、Java API を使って検索す ることも可能です。