2017-09-04 87 views
0

我試圖在Elasticsearch中定義一個模式/規則,該模式/規則用特殊字符創建出1token的2tokens。如何在Elasticsearch(德語)中使用特殊字符的1令牌生成2個令牌

實施例:

Servicekaufmann/-frau

應生成以下2個令牌:

Servicekaufmann

Servicekauffrau

這意味着模式/規則應該轉換:

*考夫曼/ -frau

*考夫曼

* kauffrau

這樣不僅「Servicekaufmann/-frau「將被轉換,但也可以是其他表達方式,例如 「Industrykaufmann/-frau」或通常任何其他「*考夫曼/ -frau」。

到目前爲止,我已經嘗試了許多不同的標記過濾器和解決方法,但無法獲得預期的輸出並且現在有困難時間(阻止程序)。

預先感謝您!

+0

我們怎麼知道在哪裏削減的第一個字?爲什麼不'Servicekaufmann'和'Servicefrau'? – Toto

+0

第一個字會在** kaufmann **之前被剪切掉 –

+0

爲什麼?規則是什麼? – Toto

回答

0

隨着的preg_replace功能:

$t = 'Industrykaufmann/-frau'; // input token 
list($t1, $t2) = explode(' ', preg_replace('~^(.*)(\w{4})/-(\w+)$~', '$1$2 $1$3', $t)); 

var_dump($t1, $t2); 

輸出:

string(16) "Industrykaufmann" 
string(16) "Industrykauffrau"