---
settings:
  analysis:
    analyzer:
      # Don't use ngram for search otherwise 'horribleexample' would match
      # 'horriblesubs'
      nyaapantsu_search_analyzer:
        tokenizer: standard
        filter:
          - standard
          - lowercase
        char_filter:
          - dash_to_underscore

      nyaapantsu_index_analyzer:
        tokenizer: standard
        filter:
          - standard
          - lowercase
          - e_ngram_filter
        char_filter:
          - dash_to_underscore

    filter:
      e_ngram_filter:
        type: edge_ngram
        min_gram: 2
        max_gram: 15

    char_filter:
      dash_to_underscore:
        type: pattern_replace
        pattern: "([^\\s]+)-(?=[^\\s]+)"
        replacement: "$1_"

  index:
    number_of_shards: 1
    number_of_replicas: 0
    max_result_window: 30000

mappings:
  torrents:
    properties:
      # TODO Consistent ID's type in TorrentJSON
      id:
        type: long
      name:
        type: text
        analyzer: nyaapantsu_index_analyzer
        fields:
          raw:
            type: keyword
      category:
        type: text
      sub_category:
        type: text
      status:
        type: long
      hash:
        type: text
      date:
        type: date
      uploader_id:
        type: long
      downloads:
        type: long
      seeders:
        type: long
      leechers:
        type: long
      completed:
        type: long
      filesize:
        type: long

---
settings:
  analysis:
    analyzer:
      # Don't use ngram for search otherwise 'horribleexample' would match
      # 'horriblesubs'
      nyaapantsu_search_analyzer:
        tokenizer: standard
        filter:
          - standard
          - lowercase
        char_filter:
          - dash_to_underscore

      nyaapantsu_index_analyzer:
        tokenizer: standard
        filter:
          - standard
          - lowercase
          - e_ngram_filter
        char_filter:
          - dash_to_underscore

    filter:
      e_ngram_filter:
        type: edge_ngram
        min_gram: 1
        max_gram: 16

    char_filter:
      dash_to_underscore:
        type: pattern_replace
        pattern: "([^\\s]+)-(?=[^\\s]+)"
        replacement: "$1_"

  index:
    number_of_shards: 1
    number_of_replicas: 0
    max_result_window: 30000

mappings:
  torrents:
    properties:
      # TODO Consistent ID's type in TorrentJSON
      id:
        type: long
      name:
        type: text
        analyzer: nyaapantsu_index_analyzer
        fields:
          raw:
            type: keyword
      category:
        type: text
      sub_category:
        type: text
      status:
        type: long
      hash:
        type: text
      date:
        type: date
      uploader_id:
        type: long
      downloads:
        type: long
      seeders:
        type: long
      leechers:
        type: long
      completed:
        type: long
      filesize:
        type: long

Use minimum 1 ngram (ie: for Gantz O)
Use minimum 1 ngram (ie: for Gantz O)
