您可以通過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和無線仍將作爲這是因爲他們是保護。 word_delimiter
有很多靈活性選項。你也可以preserve_original這將幫助你很多。
GET logs_index/_analyze?text=iPhone&analyzer=camel_analyzer
結果
{
"tokens": [
{
"token": "iphone",
"start_offset": 0,
"end_offset": 6,
"type": "word",
"position": 1
}
]
}
現在用
GET logs_index/_analyze?text=NullPointerException&analyzer=camel_analyzer
結果
{
"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這如何幫助修復tokenizer? (和順便說一句 - 我使用小寫字母過濾器) – tishma
標記化器不同於過濾器。 iPhone將被索引爲帶有小寫過濾器的iphone。它會幫助,如果你發佈你現在的anlayzer和映射 – ChintanShah25