我正在使用德語語言分析程序標記某些內容。我知道它基本上是一個「小寫」,「german_stop」,「german_keywords」,「german_normalization」,「german_stemmer」的宏過濾器。Elasticsearch如何配置語言分析器(德語)或構建自定義標準化程序
我的問題與規範化過濾器有關。這裏是過濾器的Elasticsearch Documentation和Lucene Implementation。問題是ae ue和oe被視爲德文字母ä,ö和ü,因此轉換爲a,o,u。
第二次轉換是好的,但第一次轉換會導致比解決問題更多的問題。在德語文本中通常沒有ae,ue,oe表示ä,ü,ö。他們實際上出現的大部分時間都是外來詞,來自拉丁語或英語,如'Aearodynamik'(空氣動力學)。然後過濾器將'Ae'解釋爲'Ä',然後將其轉換爲'A'。這產生了'arodynamik'作爲標記。通常這不是問題,因爲搜索詞也用該過濾器標準化。然而,如果與通配符搜索結合使用,這會產生問題:
想象一個像'FooEdit'這樣的詞,它將被標記爲'foodit'。搜索'edit OR * edit *'(這是我在用戶搜索'edit'時的正常搜索),因爲'edit'的'e'丟失了,所以不會產生結果。由於我的內容有很多這樣的詞彙,而且人們正在搜索部分詞彙,所以它看起來並不像邊緣案例那麼多。
所以我的問題是有什麼辦法擺脫'ae - >'轉型?我的理解是,這是German2 snowball algorithm的一部分,所以這可能不能改變。這是否意味着我將不得不擺脫整個標準化步驟,或者我可以提供我自己的雪球算法版本,在那裏我只剝去我不喜歡的部分(沒有找到任何有關如何使用自定義的文檔用於規範化的雪球算法)?
乾杯
湯姆
這個問題,我相信,通配符,模糊和正則表達式查詢子句不會被分析,所以'aerody *'不匹配'arodynamik「 – femtoRgon
@femtoRgon我看,我沒有正確閱讀:( – Slomo