defmodule Something.Schema do use ESx.Schema defstruct [:id, :title] mapping do indexes :ngram_analyzer, type: "string", analyzer: "ngram_analyzer" indexes :ja_analyzer, type: "string", analyzer: "ja_analyzer" indexes :romajiyomi_analyzer, type: "string", analyzer: "romajiyomi_analyzer" indexes :kanayomi_analyzer, type: "string", analyzer: "kanayomi_analyzer" indexes :multiple, type: "string", analyzer: "ngram_analyzer", search_analyzer: "ngram_analyzer" end analysis do tokenizer :ngram_tokenizer, type: "nGram", min_gram: "2", max_gram: "3", token_chars: ["letter", "digit"] analyzer :ngram_analyzer, tokenizer: "ngram_tokenizer", char_filter: ["html_strip", "kuromoji_iteration_mark"], filter: ["lowercase", "kuromoji_stemmer", "cjk_width"] # .. filter :ja_posfilter, type: "kuromoji_part_of_speech", stoptags: ["助詞-格助詞-一般", "助詞-終助詞"] filter :romajiform, type: "kuromoji_readingform", use_romaji: true filter :katakanaform, type: "kuromoji_readingform", use_romaji: false filter :split_delimiter, type: "word_delimiter", generate_word_parts: true, generate_number_parts: false, catenate_words: false, catenate_numbers: false, catenate_all: false, split_on_case_change: false, preserve_original: false, split_on_numerics: false, stem_english_possessive: false tokenizer :ja_tokenizer, mode: "search", type: "kuromoji_tokenizer" analyzer :ja_analyzer, type: "custom", tokenizer: "ja_tokenizer", char_filter: ["html_strip", "kuromoji_iteration_mark"], filter: ["lowercase", "ja_posfilter", "kuromoji_stemmer", "cjk_width", "kuromoji_baseform"] analyzer :romajiyomi_analyzer, type: "custom", tokenizer: "ja_tokenizer", char_filter: ["html_strip", "kuromoji_iteration_mark"], filter: ["lowercase", "ja_posfilter", "kuromoji_stemmer", "cjk_width", "kuromoji_baseform", "romajiform"] analyzer :kanayomi_analyzer, type: "custom", tokenizer: "ja_tokenizer", char_filter: ["html_strip", "kuromoji_iteration_mark"], filter: ["lowercase", "ja_posfilter", "kuromoji_stemmer", "cjk_width", "kuromoji_baseform", "katakanaform", "split_delimiter"] end def as_indexed_json(%{} = schema, opts) do Poison.encode! schema end end