word_delimiter token filterで要件を満たすことができます。 これはこれは、ケースに単語を分割します
{
"settings": {
"analysis": {
"analyzer": {
"camel_analyzer": {
"tokenizer": "whitespace",
"filter": [
"camel_filter",
"lowercase",
"asciifolding"
]
}
},
"filter": {
"camel_filter": {
"type": "word_delimiter",
"generate_number_parts": false,
"stem_english_possessive": false,
"split_on_numerics": false,
"protected_words": [
"iPhone",
"WiFi"
]
}
}
}
},
"mappings": {
}
}
私のセットアップであることのでNullPointerException
がヌル、ポインタと例外としてトークン化されますが、iPhoneとのWiFiとして残る変更しますそれらはそのまま保護です。 word_delimiter
には柔軟性のための多くのオプションがあります。 preserve_originalでもお手伝いします。
GET logs_index/_analyze?text=iPhone&analyzer=camel_analyzer
結果
GET logs_index/_analyze?text=NullPointerException&analyzer=camel_analyzer
結果と今
{
"tokens": [
{
"token": "iphone",
"start_offset": 0,
"end_offset": 6,
"type": "word",
"position": 1
}
]
}
{
"tokens": [
{
"token": "null",
"start_offset": 0,
"end_offset": 4,
"type": "word",
"position": 1
},
{
"token": "pointer",
"start_offset": 4,
"end_offset": 11,
"type": "word",
"position": 2
},
{
"token": "exception",
"start_offset": 11,
"end_offset": 20,
"type": "word",
"position": 3
}
]
}
別のアプローチは、異なる解析器で二回あなたのフィールドを分析することであるが、私はword_delimiterがどうなる感じトリック。
これは役に立ちますか?
小文字のフィルタを使用しないでください。それはすべての単語を小文字にします – ChintanShah25
@ ChintanShah25それはどのようにトークナイザを修正するのに役立ちますか? (とbtw - 私は小文字のフィルタを使用します) – tishma
トークナイザはフィルタとは異なります。 iPhoneは小文字フィルタ付きのiphoneとしてインデックス登録されます。あなたが現在のanlayzerを投稿して – ChintanShah25