Eu tenho um arquivo com nomes de artistas. Estou tentando pesquisar na API REST do Art Institute of Chicago em busca de obras desses artistas. Um dos nomes no arquivo era 'Romare Beardon'. Minha consulta do Elasticsearch não encontrou nada.
criteria = {
"query": {"match_phrase" : {"artist_title": "romare beardon"}}
}
O problema é que o arquivo escreveu incorretamente o sobrenome (s/b 'Bearden') e o Instituto lista o nome do artista como 'Romare Howard Bearden'.
Portanto, minha consulta precisa perdoar pequenos erros ortográficos e levar em conta nomes do meio.
Eu experimentei com desleixo"
criteria = {
"query" : {"match_phrase": {"artist_title": {"query":"Romare Bearden", "slop":1 }}},
}
Isto encontra corretamente Romare Howard Bearden!
E eu experimentei imprecisão:
criteria = {
"query": {
"fuzzy" : {"artist_title": {"value": "Beardon", "fuzziness": "AUTO"}}},
}
Isto encontra 'Bearden', mas também encontra 'Pearson'. Não aceitável.
Alterar AUTO para 1 não retorna nada. Alterar AUTO para 2 retorna 'Bearden' e 'Pearson'. Não aceitável.
Alguém pode me ajudar a escrever uma consulta que possa pegar 'Romare Beardon' e encontrar 'Romare Howard Bearden'. Ele precisa ser generalizado para que qualquer nome e sobrenome, mesmo que ligeiramente incorreto, encontre o primeiro meio e o último com alta precisão.