Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

237
Visualizações
¿Cómo realizar una consulta "me gusta" con búsqueda de texto completo en mongodb?

Sé que mongo no admite $regex o una operación similar con búsqueda de texto completo en este momento. Solo coincide con el texto o la frase. Pero necesito realizar una búsqueda de consulta similar en campos indexados. Por lo tanto, necesito ayuda con respecto a la elección de múltiples marcos de búsqueda o cualquier otro trabajo para resolver este problema.

He anidado la estructura del documento. Por ejemplo:

 { "name": "John", "phones": [{ "phone_number": "1234", "is_primary": true }, { "phone_number": "5678", "is_primary": false }] }

Intenté usar Apache Solr pero descubrí que no brinda un buen soporte para documentos anidados. Aplana la estructura e indexa los campos, pero cuando traté de realizar una consulta similar a la que mencioné anteriormente, no funcionó.

Estoy usando scala, play y mongodb . No es factible para mí cambiar la estructura del documento anidado ahora. ¿Cuáles son las plataformas de búsqueda adecuadas que podría integrar con mongodb para desarrollar un marco de búsqueda poderoso? ¿Cómo puedo manejar este problema? ¿Cuál sería el mejor enfoque en este escenario?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Para realizar una búsqueda de texto completo, puede crear text index y usarlo. más sobre el índice de texto

Sintaxis para crear índice de texto

 db.colectionName.createIndex( { fieldName: "text" } );

Aquí se muestra para un solo campo que también puede crear con múltiples campos. pero recuerda que

Una colección puede tener como máximo un índice de texto.

entonces puedes buscar usando $text y $search

 var searchText= 'some text to search'; db.collectionName.find({ $text: { $search: searchText} });

Pero para la coincidencia de secuencias o la coincidencia de patrones no es necesario crear text index puede usar $regex .

 var searchName ='som'; db.collectionName.find({"name":{ $regex: searchName, $options: 'i' }})

para la consulta anterior con $regex que coincidirá parcialmente. por ejemplo, en su name:'some text to search' por lo que puede devolver datos si el valor de searchName como some , som , ome , rex ...

para un mejor rendimiento puede crear un índice normal para el campo de name

over 4 years ago · Santiago Trujillo Relatório

0

Puede hacer esto en SOLR, pero debe definir de antemano los tipos de consultas que desea realizar y aplanar el índice de manera creativa para que pueda consultar y recuperar lo que necesita. Puede utilizar campos de varios valores para almacenar más de un valor. Puede almacenar una versión JSON de todo el objeto en un campo de texto si su cliente necesita crear una instancia.

Por ejemplo, podría almacenar primarias y secundarias por separado:

 phone_number_primary: 1234,... phone_number_secondary: 5678,... my_json_blob: {OBJECT HERE}

luego puede recuperar y consultar cada uno por separado. Si desea buscar ambos, puede consultar ambos

 ( phone_number_primary:1234 OR phone_number_secondary:1234)

o puede definir un campo adicional que almacene ambos números en su esquema:

 <copyField source="phone_number_*" dest="phone_number_all" />

y luego busque en este campo.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda