2016-08-18 11 views
1

弾力的なパターンの正規表現で作業する方法を説明するドキュメントがあるかどうか質問したいと思います。弾性検索パターンの正規表現で始まる

私は書く必要がありますパターンキャプチャトークンフィルタ tokesは特定の単語で始まるフィルタです。例えば、入力ストリームは( "abdef" "abcefgh"、 "ABC123"、 "AABBCC"、 "ABC"、)のようにする必要があり、私のトークナイザのみためABC ABC123 abcefghをtokes返します。トークンこれらのトークンは「abc」で始まります。

このユースケースの達成方法を教えてもらえますか?

ありがとうございました。

+0

正規表現は簡単です - 'abc。*'。 –

答えて

1

私はこのような何かを示唆:

"analysis": { 
    "analyzer": { 
    "my_trim_keyword_analyzer": { 
     "type": "custom", 
     "tokenizer": "keyword", 
     "filter": [ 
     "lowercase", 
     "trim", 
     "generate_tokens", 
     "eliminate_tokens", 
     "remove_empty" 
     ] 
    } 
    }, 
    "filter": { 
    "eliminate_tokens": { 
     "pattern": "^(?!abc)\\w+$", 
     "type": "pattern_replace", 
     "replacement": "" 
    }, 
    "generate_tokens": { 
     "type": "pattern_capture", 
     "preserve_original": 1, 
     "patterns": [ 
     "(([a-z]+)(\\d*))" 
     ] 
    }, 
    "remove_empty": { 
     "type": "stop", 
     "stopwords": [""] 
    } 
    } 
} 

あなたのトークンがpattern_captureフィルタの結果であるならば、あなたは1は基本的にトークンドンと一致する私の例ではeliminate_tokensと呼ばれるこのフィルタの後に追加する必要があるだろうabcで始まります。一致しないものは、空の文字列("replacement": "")に置き換えられます。

この後、空のトークンを削除するために、私はremove_emptyフィルタを追加しました。これは基本的にstopフィルタで、ストップワードは""(空文字列)です。

+0

お返事ありがとうございます。私はこれとその仕事を試しました!もう1つ質問がありますか? "abc" OR "bca" OR "gdfh"で始まる単語を取得したいのですが? – user1827257

+0

あなたは 'elimin_tokens'フィルタの正規表現を変更します:' ^(?!(abc | bca | gdfh))\\ w + $ ' –

+0

ありがとう、とても簡単です!本当に役に立ちました! – user1827257