Uma pesquisa de texto $ pode executar uma correspondência parcial
Ok, estou muito confuso com esse comportamento. Parece inconsistente e estranho, especialmente porque li que o Mongo não deve oferecer suporte a termos de pesquisa parciais na pesquisa de texto completo. Estou usando a versão 3.4.7 do Mongo DB Community Server. Estou fazendo esses testes com o shell Mongo.
Então, eu tenho uma coleção Mongo DB com um índice de texto atribuído. Eu criei o índice assim:
db.submissions.createIndex({"$**":"text"})
Há um documento nesta coleção que contém esses dois valores:
"Craig"
"Dr. Bob".
Meu objetivo é fazer uma pesquisa de texto por um documento que tenha vários termos correspondentes.
Então, aqui estão os testes que eu executei e sua saída inconsistente:
ÚNICO PRAZO, COMPLETO
db.submissions.find({"$text":{"$search":"\"Craig\""}})
Resultado: Obtém o documento com esse valor.
ÚNICO PRAZO, PARCIAL
db.submissions.find({"$text":{"$search":"\"Crai\""}})
Resultado: não retorna nada, porque esse termo de pesquisa parcial não corresponde exatamente a nada no documento.
TERMOS MÚLTIPLOS, COMPLETOS
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bob\""}})
Resultado: retorna o documento com esses dois termos.
TERMOS MÚLTIPLOS, UM PARCIAL
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bo\""}})
Resultado: retorna o documento com os dois termos, apesar de um termo ser parcial. Não há nada no documento que corresponda a "Dr. Bo"
TERMOS MÚLTIPLOS, AMBOS PARCIAIS
db.submissions.find({"$text":{"$search":"\"Crai\" \"Dr. Bo\""}})
Resultado: retorna o documento com os dois termos, apesar de os dois termos serem parciais e incompletos. Não há nada no documento que corresponda a "Crai" ou "Dr. Bo".
Pergunta, questão
Então, tudo se resume a: por quê? Por que, quando faço uma pesquisa de texto com um termo parcial com apenas um único valor, nada é retornado. Quando faço uma pesquisa de texto com dois termos parciais, recebo o resultado correspondente? Parece tão estranho e inconsistente.
Obrigado.