“Voulez-vous dire?” dans Lucene.net
Quelqu'un peut s'il vous plaît laissez-moi savoir comment mettre en œuvre "tu veux dire" dans Lucene.net?
Merci!
Vous devez vous connecter pour publier un commentaire.
Quelqu'un peut s'il vous plaît laissez-moi savoir comment mettre en œuvre "tu veux dire" dans Lucene.net?
Merci!
Vous devez vous connecter pour publier un commentaire.
Vous devriez regarder dans le Correcteur d'orthographe module dans le répertoire contrib dir. C'est un port de Java lucene est Correcteur d'orthographe module, de sorte que son la documentation devrait être utile.
(À partir de la documentation javadoc:)
Exemple D'Utilisation:
Autant que je sache, Lucene prend en charge de proximité-recherche, ce qui signifie que si vous utilisez quelque chose comme:
champ:stirng~0.5
(il s un tilde signe -)
va correspondre à la chaîne "string". le flotteur est comment "tolérant", la recherche serait, où 1.0 est exact et 0,0 match est tout (en quelque sorte).
Différents analyseurs va toutefois mettre en œuvre de façon différente.
Proximité-recherche est beaucoup plus lent que d'un flou de recherche (stri*) - à utiliser avec prudence. Dans votre cas, on peut supposer que si vous ne trouvez pas de matchs sur une recherche régulière, vous essayez une de proximité-recherche pour voir ce que vous trouvez, et le présent "tu veux dire" sur la base du résultat d'une certaine manière.
Pourrait être utile de mettre en cache ce genre de recherches de très commun mispellings, pour des raisons de performances.
Google "voulez-vous dire?" est (probablement; ils sont secrètes, bien sûr), mis en œuvre par la consultation de leurs journal de la requête. Regardez pour voir si les gens qui recherchent la requête que vous êtes de traitement cherché quelque chose de très similaire peu de temps après; si oui, il indique qu'ils avaient fait une erreur, et se rendit compte de ce qu'ils doivent être à la recherche pour.
Puisque vous n'ont probablement pas une énorme journal de la requête, vous pouvez en approchant. Prendre de la requête, de diviser les termes, voir s'il y a des termes similaires dans la base de données (par la distance d'édition, peu importe); remplacer les termes par ceux qui sont près de termes, et de réexécuter la requête. Si vous obtenez plus de hits, qui était probablement mieux de requête. Suggérer à l'utilisateur. (Et puisque vous avez déjà reçu les coups, et la plupart des gens ne regardent que les 2 premiers résultats montrent eux.)
Prendre un coup d'oeil sur google code du projet intitulé semanticvectors.
Il y a une quantité décente de discussion sur la Lucene des listes de diffusion pour faire de la fonctionnalité comme ce que vous êtes après utilisation, cependant il est écrit en java.
Vous aurez probablement à l'analyser et à l'utilisation de certains algorithmes d'apprentissage automatique sur vos journaux de recherche pour construire une telle fonction!