Slide 1

Slide 1 text

Percolator id:tarao @oarat 2018-08-02 Elasticsearch

Slide 2

Slide 2 text

(id:tarao @oarat) 2008-10 ( ) 2010-04 (DC1) 2013-04 2013-12 2017-02 ◮ ◮ , ◮ ◮ Scala

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

◮ (2015 ) ◮

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

:

Slide 7

Slide 7 text

◮ ◮ ◮

Slide 8

Slide 8 text

pull ◮ (Complement Naive Bayes) ◮ ◮ ◮ N ◮ ◮

Slide 9

Slide 9 text

pull

Slide 10

Slide 10 text

pull ◮ ◮ ◮ Elasticsearch ◮ Memcached

Slide 11

Slide 11 text

pull

Slide 12

Slide 12 text

pull ◮ ◮ ◮ ◮ ( ) ◮ N ( N ) ◮

Slide 13

Slide 13 text

push ◮ ( ) ◮ ( )

Slide 14

Slide 14 text

push

Slide 15

Slide 15 text

◮ ◮

Slide 16

Slide 16 text

◮ ◮ ⇒ Percolator

Slide 17

Slide 17 text

Percolator https://en.wikipedia.org/wiki/Coffee_percolator

Slide 18

Slide 18 text

Percolator (Scala) createIndex(MainIndex).mappings( mapping("issue_item_query") fields percolatorField("query")) val query = issueItem.query.toCategorizingQuery.toFilteredQuery register(query) into(MainIndex / "issue_item_query", "query") withId issueItemId.toPercolatorId search(MainIndex / "issue_item_query") query { percolateQuery("entry", "query") usingSource entry.toEsEntry.toJsonString }

Slide 19

Slide 19 text

Percolator (API) PUT /MainIndex/issue_item_query { "mappings": { "_doc": { "properties": { "query": { "type": "percolator" } } } } } PUT /MainIndex/issue_item_query/issueItemId { "query": query } GET /MainIndex/issue_item_query/_search { "query": { "percolate": { "document_type": "entry", "field": "query", "document": entry } } }

Slide 20

Slide 20 text

◮ ◮ OR

Slide 21

Slide 21 text

◮ ◮ ◮ ◮

Slide 22

Slide 22 text

◮ ×8 ◮ ×250+ ◮ ×800+

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

◮ ◮ 1 ◮ ◮ ( ) ◮ ◮

Slide 25

Slide 25 text

◮ ◮ ◮ ? ( kuromoji ) ◮ ◮ → ◮ ◮ ◮ Percolator ◮ Percolator ? ◮

Slide 26

Slide 26 text

◮ push ◮ Percolator ◮ push ◮