Eu tenho um caso de uso simples em que, dado um termo, desejo iniciar uma consulta de pesquisa no atlas pesquisando essa palavra-chave no documento mongo e tenho meu índice de pesquisa criado com campos de origem armazenados anexados.
Agora tenho 2 tipos de consultas que estou tentando executar listadas abaixo:
1º:
{
text: {
query: searchKey,
path: ['title', 'description'], // Search on both title and description
},
returnStoredSource: true,
}
2º:
{
compound: {
filter: [
{
text: {
query: searchKey,
path: 'title', // Search on title
},
},
{
text: {
query: searchKey,
path: 'description', // Search on description
},
},
],
},
returnStoredSource: true,
}
Ambos estão sendo executados, mas o segundo está demorando mais e não consigo entender a diferença em ambos. Só quero fazer uma pesquisa simples de correspondência de palavra-chave nos campos title
e description
.
alguém pode ajudar?
Ambas as suas consultas estão realizando pesquisas de texto nos campos 'título' e 'descrição' em um índice do MongoDB Atlas Search. No entanto, a primeira consulta utiliza o tipo de consulta de texto diretamente, enquanto a segunda consulta utiliza o tipo de consulta composta com duas consultas de texto separadas.
A principal diferença é que a primeira consulta procura o searchKey nos campos 'título' ou 'descrição', enquanto a segunda consulta procura o searchKey no campo 'título' e separadamente no campo 'descrição'.
Aqui está um detalhamento das diferenças e por que a segunda consulta pode levar mais tempo:
1: Sua primeira consulta usa o tipo de consulta de texto para pesquisar a searchKey nos campos 'título' e 'descrição' simultaneamente. Ele retornará documentos onde searchKey aparece em qualquer um dos campos.
2: Sua segunda consulta usa o tipo de consulta composta com duas consultas de texto separadas. Cada consulta de texto procura o searchKey no campo 'título' ou 'descrição'. A consulta composta combina os resultados dessas duas consultas. Esta abordagem pode ser menos eficiente, pois realiza duas pesquisas separadas e depois combina os resultados.
Se o seu objetivo é ter uma pesquisa simples de correspondência de palavras-chave nos campos 'título' e 'descrição', a primeira consulta (uso direto de consulta de texto) é mais apropriada. Ele procura a palavra-chave em qualquer um dos campos e deve ser mais eficiente em comparação com a segunda consulta.