2010-06-04 4 views
1

Je veux rechercher des discussions dans ma base de données mysql avec Solr.Faire correspondre un mot avec des mots similaires en utilisant Solr?

Mais je ne veux pas simplement rechercher les mots de fil, mais pour des mots similaires.

Par exemple. si un titre de fil est "chien à vendre" et si l'utilisateur recherche des chiens, le titre sera dans le résultat.

et si un utilisateur recherche "mac os x" le mot "snow leopard" apparaîtra.

et la possibilité de lier des mots que l'application pense être liés par exemple. maison et appartement.

Comment ce type de logique est-il fait?

Je sais que vous pouvez avec solr rechercher des mots dans un fichier de dictionnaire que vous créez/ajouter, donc solr cherchera des chiens et voir quels mots liés il y a (par exemple chien).

mais où trouvez-vous un tel dictionnaire?

Je n'ai aucune idée de ce type d'implémentation.

s'il vous plaît pointez-moi dans la bonne direction.

grâce

Répondre

2

Je pense que vous devrez construire un tel dictionnaire vous, car il est très spécifique à l'application. "Maison" et "Appartement" pourraient être des termes similaires pour votre application, mais très éloignés dans une autre application.

Une fois que vous avez ce dictionnaire, vous pouvez l'utiliser via le SynonymFilterFactory.

La correspondance entre "chien" lorsque l'utilisateur recherche "chiens" est gérée par le moteur de recherche et ne nécessite aucun dictionnaire.

+0

mais qu'en est-il d'autres langues, par exemple. suédois? là, la forme plurielle ne consiste pas simplement à ajouter un "s" mais à ajouter: "ar", "or", "er" et parfois rien. Comment pourrait-il le savoir? le stemmer est juste pour l'anglais? –

+1

@fayer: "Solr inclut la prise en charge de la suppression du suédois via solr.SnowballPorterFilterFactory, et Lucene inclut un exemple de liste de mots vides". http://wiki.apache.org/solr/LanguageAnalysis#Swedish –

1

Vous pouvez utiliser le fichier synonym.txt et créer votre propre dictionnaire.

Une autre option pour vous pourrait être une recherche floue.

+0

Je ne pense pas que vous pouvez trouver "Appartement" avec une recherche floue pour "Maison" –

+0

Thats true. Mais sa question initiale est: "Je veux chercher des threads dans ma base de données mysql avec Solr. Mais je veux que ce ne soit pas juste chercher les mots de fil, mais pour des mots similaires." Et les synonymes sont une option ... – Karussell

Questions connexes