がelasticSearchの私のフィールドである:ここではElasticSearchアナライザここ
"keywordName": {
"type": "text",
"analyzer": "custom_stop"
}
は私のアナライザです:
"custom_stop": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"my_stop",
"my_snow",
"asciifolding"
]
}
そして、ここでは私のフィルタは、次のとおりです。ここで
"my_stop": {
"type": "stop",
"stopwords": "_french_"
},
"my_snow" : {
"type" : "snowball",
"language" : "French"
}
は私です私の唯一のフィールド(keywordName)のインデックスを文書化します:
「canne a peche」、「canne」、「canne a peche telescopique」、「iphone 8」、「iphone 8 case」、「iphone 8 cover」、「iphone 8 charger」、「iphone 8 new」
私は「カンネ」を検索すると、それは私が何をしたいです「カンネ」文書を、提供します:
GET ads/_search
{
"query": {
"match": {
"keywordName": {
"query": "canne",
"operator": "and"
}
}
},
"size": 1
}
私は「カンネàPECHE」を検索すると、それは私に「カンネA PECHE」を与え、それもOKです。 「CannesàPêche」 - >「canne a peche」 - >「OK」と同じです。
「iphone 8」を検索すると、「iphone 8」の代わりに「iphone 8 cover」が表示されます。サイズを変更すると、5が設定されます(「iphone 8」を含む5つの結果が返されます)。私は "iphone 8"がスコアの点で4番目の結果であることを知っています。
{
"took": 5,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 5,
"max_score": 1.4009607,
"hits": [
{
"_index": "ads",
"_type": "keyword",
"_id": "iphone 8 cover",
"_score": 1.4009607,
"_source": {
"keywordName": "iphone 8 cover"
}
},
{
"_index": "ads",
"_type": "keyword",
"_id": "iphone 8 case",
"_score": 1.4009607,
"_source": {
"keywordName": "iphone 8 case"
}
},
{
"_index": "ads",
"_type": "keyword",
"_id": "iphone 8 new",
"_score": 0.70293105,
"_source": {
"keywordName": "iphone 8 new"
}
},
{
"_index": "ads",
"_type": "keyword",
"_id": "iphone 8",
"_score": 0.5804671,
"_source": {
"keywordName": "iphone 8"
}
},
{
"_index": "ads",
"_type": "keyword",
"_id": "iphone 8 charge",
"_score": 0.46705723,
"_source": {
"keywordName": "iphone 8 charge"
}
}
]
}
}
どのようにすることができます:最初はここ
がクエリの結果です...その後 "iphone 8新しい" そして最後に "iphone 8" "iphone 8の場合、" その後 "iphone 8カバー" です私はキーワード "canne a peche"(アクセント、大文字、複数の用語)に関する柔軟性を保ちますが、完全一致( "iphone 8" = "iphone 8")があれば正確なkeywordNameを教えてください。
これは私が探していた動作です! Thx – Gun
「最も近いもの」の結果を増やすことは可能ですか?私が意味するのは、 - > "sâmsung"を検索すると、 "samsung"というトークンが1つあります。しかし、最高のスコアは「samsung galaxy」(1.11)、「samsung charger」(0.94)、「samsung」(0.84)です。私はそれが "sâmsung"に最も近いマッチングであるので、 "samsung"を後押しするようにどのように言えますか?そして、「samsung galaxy」や「samsung charger」ではなく、 – Gun