2017-10-15 19 views
1

Nous utilisons Couchbase 4.6.2 et essayons d'utiliser la fonction de recherche plein texte. Notre tentative consiste à rechercher, trier et paginer.Comment configurer l'index de recherche de texte intégral Couchbase pour trier sur la propriété complète

Actuellement, nous l'avons indexé en utilisant les paramètres d'index par défaut.

Le problème que nous rencontrons est le suivant: lorsque la fonction FTS trie les enregistrements, elle trie en fonction d'un seul mot du champ. Sur la base de la documentation, il semble que cela soit dû au fonctionnement de l'indexation de recherche en texte intégral (et à l'analyseur choisi dans l'index). Il prend chaque mot et crée un index sur cela. Ensuite, lorsque le tri est effectué, il choisit les valeurs min ou max pour ce champ et trie sur cette valeur.

Est-il possible que le FTS indexe les champs par mot comme c'est le cas maintenant, mais que le tri opère sur tout le contenu de la propriété?

+0

FYI v5.0 sera probablement beaucoup plus rapide pour vous et a été publié la semaine dernière avec diverses corrections de bugs et améliorations. – 1tylermitchell

Répondre

4

Le tri fonctionne en utilisant les termes de l'index pour le champ spécifié. Donc, afin de trier sur la valeur entière, vous devez utiliser l'analyseur de mot-clé, car cela conserve une valeur de champ entier en tant que terme unique. En utilisant l'analyseur de mots clés sur ce champ, des valeurs telles que "Jeux vidéo" seront indexées comme un terme unique.

Ensuite, si vous spécifiez ce champ pour le tri, il le classera par la valeur entière. En outre, contrairement à l'une des autres réponses, le tri fonctionne sur la valeur indexée et ne nécessite pas de valeur stockée.

Un problème connexe est que parfois vous voulez effectuer une recherche sur le terrain ainsi que trier dessus, et dans ce cas vous voulez utiliser un analyseur autre qu'un mot-clé. Pour accommoder les deux cas d'utilisation, il suffit d'indexer le champ deux fois, une fois pour la recherche et une fois pour le tri. Pour ce faire, vous devez simplement leur donner des noms différents. Quelque chose comme 'catégorie' pour la recherche et 'category.sort' pour le tri.

0

vous pouvez essayer d'ajouter l'option « de tri » dans votre demande de recherche pour explorer les ness triés des résultats, par exemple: « trier »: [ « FieldName »] pour monter et « sort »: [ "-fieldname "] pour l'ordre décroissant. Mais pour cela, vous devez activer le "champ de stockage"/"Stocker les champs dynamiques" lors de la création de l'index.