2017-05-01 5 views
1

Comment rechercher une recherche partielle?comment trouver une recherche partielle pour Mongodb?

Maintenant Im essayant de trouver

db.content.find({$text: {$search: "Customer london"}}) 

Il trouve tous les enregistrements correspondants customer, et tous les enregistrements correspondants london.

Si je cherche une partie d'un mot par exemple lond ou custom

db.content.find({$text: {$search: "lond"}}) 

Il renvoie un résultat vide. Comment puis-je modifier la requête pour obtenir le même résultat que lorsque je recherche london?

+0

double possible de [préfixe MongoDB générique: texte intégral-recherche (texte $) trouver une partie avec chaîne_recherche] (http://stackoverflow.com/questions/24343156/ mongodb-préfixe-wildcard-fulltext-recherche-texte-trouver-partie-avec-chaîne de recherche) – Simulant

Répondre

0

Vous pouvez utiliser regex pour le contourner (https://docs.mongodb.com/manual/reference/operator/query/regex/). Cependant, cela fonctionnera pour ce qui suit:

si vous avez mot cuisine, suivant les requêtes peuvent vous donner résultat que

  • cuisine
  • coo (exacte correspondant) (partie du mot)
  • cuit (Le mot contenant la racine anglaise du mot document, où cook est le mot racine dont provient la cuisson ou cuit)

Si oui Vous voulez aller un peu plus loin et obtenir un document de résultat contenant cuisson lorsque vous tapez reculer (Vplouté V au lieu de C), allez pour elasticsearch.

Elasticsearch est facile à installer et dispose d'un analyseur edge-ngram extrêmement puissant qui convertit chaque mot en mots plus petits. Par conséquent, lorsque vous avez mal orthographié, vous obtiendrez toujours un document basé sur le score que elasticsearch donne à ce document.

Vous pouvez lire ici: https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-edgengram-tokenizer.html

+0

et qu'en est-il si je recherche deux mots. Je veux trouver tous les enregistrements qui ont chacun des mots ou un de ces mots, par exemple Customer london – lolka

0

il retournera toujours le tableau vide pour les mots partiels comme lorsque vous recherchez lond pour obtenir ce type de texte london ..

parce qu'il prend des mots pleins et la recherche même que celle qu'ils sont ..

Non achive mêmes résultats tels que: -

LOLONLONDLONDOLONDON

Ici vous pouvez obtenir l'aide de élasto-RECHERCHE. C'est assez bon pour la recherche en texte intégral lors de l'implémentation avec mongoDB.

refrence: ElasticSearch

Merci