0
我使用pattern_capture
過濾器來保存所有的縮寫避免使用首字母縮略詞嗎?
PUT test_index/_settings
{
"index.analysis.filter": {
"acronym_en_EN": {
"type": "pattern_capture",
"patterns": [
"(?:[a-zA-Z]\\.)+",
"((?:[a-zA-Z]\\.)+[a-zA-Z])",
"((?:[a-zA-Z]\\.)+[s]$)",
"((?:[a-zA-Z]\\.)+[s][\\.]$)"
],
"preserve_original": true
}
}
}
但是我注意到,隨着s
或s.
結束首字母縮寫爲梗有一個詞幹過濾器也連接到分析儀。以上過濾器中用於處理s
的正則表達式也不起作用。
我使用測試輸出這
GET test_index/_analyze?tokenizer=standard&filters=lowercase,acronym_en_EN,apostrophe,porter_stemmer_en_EN&text=u.s.a. u.s. s.w.a.t u.t.
這給了我
{
"tokens": [
{
"token": "u.s.a",
"start_offset": 0,
"end_offset": 5,
"type": "<ALPHANUM>",
"position": 1
},
{
"token": "u.",
"start_offset": 7,
"end_offset": 10,
"type": "<ALPHANUM>",
"position": 2
},
{
"token": "u.",
"start_offset": 7,
"end_offset": 10,
"type": "<ALPHANUM>",
"position": 2
},
{
"token": "s.w.a.t",
"start_offset": 12,
"end_offset": 19,
"type": "<ALPHANUM>",
"position": 3
},
{
"token": "u.t",
"start_offset": 20,
"end_offset": 23,
"type": "<ALPHANUM>",
"position": 4
}
]
}
有什麼辦法,我可以保持與s
,從而結束了首字母縮寫爲u.s.
或u.s
我不明白u.
?
添加'$'似乎是一個好主意。但是與'pattern_replace'有關的大多數例子都是用空字符串替換匹配的詞。有沒有一種方法可以用相同的匹配項替換它? –
捕獲組應該工作ala [appendReplacement](http://docs.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html#appendReplacement(java.lang.StringBuffer,%20java.lang 。串))。 – Nik
我使用'#'作爲這些縮寫詞的分隔符。我認爲它應該工作。感謝您的建議。 –