Current section

Files

Jump to
esx lib something schema.ex
Raw

lib/something/schema.ex

defmodule Something.Schema do
# @moduledoc false
use ESx.Schema
# @derive [Poison.Encoder, except: [:id]]
defstruct [:id, :title]
mapping do
indexes :title, type: "string", analyzer: "ngram_analyzer", search_analyzer: "ngram_analyzer"
indexes :content, type: "string", analyzer: "ngram_analyzer", search_analyzer: "ngram_analyzer"
end
settings do
analysis do
analyzer :ngram_analyzer,
tokenizer: "ngram_tokenizer",
char_filter: ["html_strip", "kuromoji_neologd_iteration_mark"],
filter: ["lowercase", "kuromoji_neologd_stemmer", "cjk_width"]
tokenizer :ngram_tokenizer,
type: "nGram", min_gram: "2", max_gram: "3",
token_chars: ["letter", "digit"]
end
end
# mapping [
# _ttl: [
# enabled: "true",
# default: "180d"
# ],
# _all: [
# enabled: false
# ],
# properties: [
# title: [
# type: "string",
# search_analyzer: "ngram_analyzer",
# analyzer: "ngram_analyzer"
# ],
# content: [
# type: "string",
# search_analyzer: "ngram_analyzer",
# analyzer: "ngram_analyzer"
# ]
# ]
# ]
# settings [
# analysis: [
# tokenizer: [
# ngram_tokenizer: [
# type: "nGram",
# token_chars: [
# "letter",
# "digit"
# ],
# min_gram: "2",
# max_gram: "3"
# ]
# ],
# analyzer: [
# ngram_analyzer: [
# tokenizer: "ngram_tokenizer",
# filter: [
# "lowercase",
# "kuromoji_stemmer",
# "cjk_width"
# ],
# char_filter: [
# "html_strip",
# "kuromoji_iteration_mark"
# ]
# ]
# ]
# ]
# ]
# defstruct [:id, :title]
# index_name "es_antenna"
# document_type "elixir_exantenna_antenna"
# settings [
# number_of_replicas: "1",
# number_of_shards: "5",
# analysis: [
# analyzer: [
# default: [
# filter: [ "kuromoji_neologd_baseform", "ja_posfilter", "cjk_width" ],
# tokenizer: "ja_tokenizer",
# type: "custom"
# ],
# ja_analyzer: [
# filter: [ "kuromoji_neologd_baseform", "ja_posfilter", "cjk_width" ],
# tokenizer: "ja_tokenizer",
# type: "custom"
# ],
# ngram_analyzer: [
# tokenizer: "ngram_tokenizer"
# ]
# ],
# filter: [
# edge_ngram: [ max_gram: "15", min_gram: "1", type: "edgeNGram" ],
# ja_posfilter: [ stoptags: [ "助詞-格助詞-一般", "助詞-終助詞" ], type: "kuromoji_neologd_part_of_speech" ]
# ],
# tokenizer: [
# ja_tokenizer: [ type: "kuromoji_neologd_tokenizer" ],
# ngram_tokenizer: [ max_gram: "3", min_gram: "2", token_chars: [ "letter", "digit" ], type: "nGram" ]
# ]
# ]
# ]
# mapping [
# properties: [
# published_at: [
# format: "strict_date_optional_time||epoch_millis",
# type: "date"
# ],
# tags: [
# "type": "string"
# ],
# title: [
# "type": "string"
# ]
# ]
# ]
def as_indexed_json(%{} = schema, opts) do
Map.drop schema, [:id]
end
def extract_function(modules, arity) do
Enum.reduce modules, [], fn module, acc ->
functions =
Enum.map(module.__info__(:functions), fn
{function, ^arity} -> function
_ -> nil
end)
acc ++ Enum.filter_map(functions, & !!&1, & {module, &1})
end
end
def get(args), do: args
end