0

製品コードで検索したい - 文字と数字の組み合わせ (例: A210/444Alexx 1982 X、 ...)。(ところで: このタイプのデータを検索するためのベスト プラクティスはありますか?)

と のインデックスがindex_analyzerありsearch_analyzerます:

{
    "settings": {
        "analysis": {
            "analyzer": {
                "index_analyzer": {
                    "tokenizer": "standard",
                    "filter": [
                        "standard",
                        "lowercase",
                        "asciifolding",
                        "custom_word_delimiter",
                        "custom_edgengram"
                    ]
                },
                "search_analyzer": {
                    "tokenizer": "standard",
                    "filter": [
                        "standard",
                        "asciifolding",
                        "custom_word_delimiter",
                        "lowercase"
                    ]
                }
            },
            "filter": {
                "custom_word_delimiter": {
                    "type": "word_delimiter",
                    "preserve_original": "true"
                },
                "custom_edgengram": {
                    "type": "edgeNGram",
                    "min_gram": "2",
                    "max_gram": "30"
                }
            }
        }
    }
}

問題は自動入力にあります。 index_analyzerすべての値は単語型です。

curl -XGET 'http://localhost:9200/myindex/_analyze?analyzer=index_analyzer&pretty' -d 'Alexx 1982 X' | elasticat.rb

+---+------------+------+------+
| 1 | al         | 0–5  | word |
| 1 | ale        | 0–5  | word |
| 1 | alex       | 0–5  | word |
| 1 | alexx      | 0–5  | word |
| 2 | 19         | 6–10 | word |
| 2 | 198        | 6–10 | word |
| 2 | 1982       | 6–10 | word |
+---+------------+------+------+

しかし、search_analyzer(edgeNGramなし)...

curl -XGET 'http://localhost:9200/myindex/_analyze?analyzer=search_analyzer&pretty' -d 'Alexx 1982 X' | elasticat.rb
+---+------------+-------+------------+
| 1 | alexx      | 0–5   | <ALPHANUM> |
| 2 | 1982       | 6–10  | <NUM>      |
| 3 | x          | 11–12 | <ALPHANUM> |
+---+------------+-------+------------+

...数字として認識1982し、これが検索で問題を引き起こします(_allプレースホルダーを使用)。ただ検索してみると検索結果にヒットなし1982

一部の文字列型のみを強制的に使用する方法はありますか?

アイデアをありがとう!

マーティン

4

0 に答える 0