私のelasticsearchドキュメントには、次のName
ようなエントリを持つフィールドがあります:
Samsung Galaxy S3
Samsung Galaxy Ace Duos 3
Samsung Galaxy Duos 3
Samsung Galaxy S2
Samsung Galaxy S (I9000)
次のクエリでこのフィールドをクエリすると(「s」と「3」の間のスペースに注意してください) :
{
"query": {
"match": {
"Name": {
"query": "galaxy s 3",
"fuzziness": 2,
"prefix_length": 1
}
}
}
}
"Samsung Galaxy Duos 3"
ではなく、関連する結果として返されます"Samsung Galaxy S3"
。
このようなタスクで私が気付くパターンは、任意の数字と任意の 1 つのアルファベット文字の間のスペースを無視して、クエリを作成することです。たとえば、"I-phone 5s"
によっても返される必要があります"I-phone 5 s"
。
これを達成する良い方法はありますか?