我有一个艺术家名字的档案。我正在尝试搜索芝加哥艺术学院的 REST API,寻找这些艺术家的作品。文件中的名字之一是“Romare Beardon”。我的 Elasticsearch 查询什么也没找到。
criteria = {
"query": {"match_phrase" : {"artist_title": "romare beardon"}}
}
问题在于该文件的姓氏拼写错误(s/b“Bearden”),并且该研究所将艺术家的名字列为“Romare Howard Bearden”。
因此,我的查询需要原谅轻微的拼写错误并考虑中间名。
我已经尝试过“slop”
criteria = {
"query" : {"match_phrase": {"artist_title": {"query":"Romare Bearden", "slop":1 }}},
}
这正确地找到了 Romare Howard Bearden!
我已经尝试过模糊性:
criteria = {
"query": {
"fuzzy" : {"artist_title": {"value": "Beardon", "fuzziness": "AUTO"}}},
}
这会找到“Bearden”,但也会找到“Pearson”。不能接受的。
将 AUTO 更改为 1 不会返回任何结果。将 AUTO 更改为 2 将返回“Bearden”和“Pearson”。不能接受的。
任何人都可以帮我编写一个查询,可以采用“Romare Beardon”并找到“Romare Howard Bearden”。它需要进行泛化,以便任何名字和姓氏,即使稍微拼写错误,也能高精度地找到第一个中间的最后一个。