7
votes

Recommandations de techniques de recherche

C'est plus une question théorique plutôt que d'une pratique. Je travaille sur un projet qui est un catalogue assez simple de liens. Le modèle entier est similaire au catalogue DMOZ ou Yahoo, sauf que chaque entrée a certains attributs supplémentaires.

J'ai taxonomie hiérarchique Travailler sur toutes les entrées avec une relation de nombreuses tâches, toutes les entrées sont désormais triées dans ces catégories et tout semble fonctionner correctement. Maintenant, quelle utilisation est un catalogue s'il n'y a pas d'option de recherche?

Voici un peu plus de détails sur mes modèles: chaque entrée a un titre, une description, une URL et plusieurs profils sociaux: YouTube, Twitter, Flickr et quelques autres d'autres. Chaque entrée pourrait avoir un logo attaché à celui-ci et un champ caché pour les balises. De plus, le titre et la description sont stockés dans trois langues différentes. Donc, fondamentalement, j'aimerais que les résultats de la recherche soient:

  1. pertinent (y compris taxonomie)
  2. éventuellement ceux avec logos
  3. Peut-être ceux avec des profils de 100% remplis

    J'ai essayé Sphinx et travaille actuellement avec Lucene, mais il semble que je ne reçois pas la recherche en théorie. J'espère qu'il est logique que les candidatures remplies devraient comparaître plus haut que les autres, mais je ne peux pas vraiment comprendre les scores. Je ne voudrais pas que les entrées non pertinentes apparaissent sur le dessus s'il y a simplement un mot de mot dans toute la description, car les titres sont plus pertinents.

    Donc, ma question est - y a-t-il des livres, des techniques ou même d'autres moteurs de recherche (si Sphinx et Lucene ne sont pas assez bons) que vous recommanderiez à cette question ? Non seulement je voudrais obtenir un contrôle total sur les résultats de la recherche et leur classement, mais donnez également à mes visiteurs des informations correctes et pertinentes.

    Les liens sur des articles cool sont également appréciés!

    et non , je n'essaie pas de reconstruire google :)

    Merci:)


1 commentaires

P.s. Je suis prêt à donner une prime pour la meilleure réponse.


4 Réponses :


4
votes

Je suis sûr que Lucene suffit. Nous avons résolu une tâche similaire et nous avons bien fait bien. Voici quelques astuces que je peux vous proposer de regarder dans mon projet à Lucene.net.

taxonomie:

    La catégorie
  • est représentée en tant que clé entière dans dB, chaque document dispose de plusieurs instances de «catégorie» de champ de type de type. Par exemple, document: [1,2,5,10, 'Wheel'] - signifie que la roue appartient à chacune des catégories.

    champs non consultables (logos, profil social):

    • Bien sûr, vous pouvez stocker des valeurs non consultables dans les champs non indexés de Lucene. Mais nous avons stocké toutes les informations relatives au produit dans DB afin d'éviter de reconstruire l'indice de Lucene. Donc, Lucene ne possède que par ID de produit et indexé mais des valeurs stockées pour les champs clés.

      trois langues et plusieurs champs:

      • Nous n'avons que 2 langues. Donc, différents titres de produits peuvent être stockés dans le même document de Lucene et se rapporter à un seul identifiant de produit (comme j'écris avant que l'ID se réfère à DB). Cela vous permet de rechercher un produit même si la demande utilisateur utilise un mélange de langues.
      • évidemment titre, balises et description ont un poids différent pour le résultat de la recherche. Lucene le gère en attribuant un poids sur le terrain.

0 commentaires

5
votes

Excellent livre: Lucene in Action (2e édition)

Quand nous avons commencé avec Lucene, nous avons eu la première édition, cela vous emmène vraiment à travers tout ce dont vous avez besoin étape par étape. Hautement recommandé. La 2e édition est mise à jour pour la dernière et la plus grande version (3.x.x).

Le TF-IDF algorithme fonctionne très bien (plus grand) Textes, mais si vous avez une structure semblable à un record, cela peut aller de feu: les documents comportant quelques termes sont considérés comme plus «pertinents» que ceux ayant de nombreux termes. Avec Lucene, vous allez le faire travailler, mais vous devrez vous salir les mains.

Ce que vous devez faire fondamentalement, c'est booster votre champ de titre < / a>, il devient donc plus pertinent. Vous pouvez aussi Modifier le mécanisme de notation pour attribuer des scores plus élevés pour des documents plus d'informations.

Amusez-vous. Si vous ne pouvez pas le comprendre, il existe un excellent support sur le Luceneverrer"> Lucene Mailinglist .


0 commentaires

1
votes

Lucene ou Solr ferait le travail. Solr est construit sur le dessus de Lucene, Voir ici pour plus d'informations < / p>

J'irais avec Solr. Télécharger + la configuration est facile et rapide. Commencez avec le didacticiel et mon Collection de liaisons . La pertinence devrait être bien avec SOLR et est un accord facile.

Regardez dans Dewfy et Matthijs Bierman répondent à de bons points.

Choisissez ensuite le gestionnaire de requête Dernax et vous pouvez préférer les docs avec certaines propriétés.

E.g. Pour le pourcentage d'un profil complet, vous définissez un champ distinct 'Profile_Completness ", vous pouvez ajouter profil_completé à BF (boostfunction) de Denmax Handler: Plus le profil est complet, plus ces documents seront stimulés.

J'ai mentionné avant que vous puissiez facilement régler la pertinence: par exemple. Vous pouvez configurer BF à STH. Comme: bf = Titre ^ 10 tags ^ 5complesse ^ 1

"Peut-être des logos" peut être résolu via des requêtes de boost: BQ = logo: [* à *] ^ 1 . Où logo: [* à *] signifie "uniquement des documents contenant le logo de champ"

Pour afficher une arborescence de catégorie profondément imbriquée, vous devez créer cet arborescence en mémoire et nourrir SOLR avec une importation spéciale. Nous avons une application de travail pour cela. Vous pouvez utiliser Notre approche

Si vous avez besoin d'une assistance supplémentaire, n'hésitez pas à commenter.


0 commentaires

2
votes

Je vais essayer d'ajouter aux bonnes réponses de Matthijs, Dewfy et Karussell. Fondamentalement, vous essayez d'améliorer votre pertinence de recherche. Je vous suggère de lire Débogage de l'application de recherche Problèmes de pertinence et son Optimisation de la recherche sur Lucene et Solr , ainsi que son Pertinence pratique Diapositives .

Pour différentes langues et pour Faceting, je vous suggère d'utiliser Solr . C'est un moteur de recherche construit à l'aide de Lucene qui est facile à utiliser. Il peut prendre en charge plusieurs langues en utilisant une autre SOLR Core par chaque langue.


0 commentaires