2010-05-12 4 views
0

J'utilise actuellement Zend_Search_Lucene pour indexer et rechercher un nombre de documents actuellement autour de 1000 environ. Ce que je voudrais faire, c'est changer la façon dont le moteur marque les hits sur un document, à partir de la valeur par défaut actuelle.Extension/modification de la recherche Zend_Search_Lucene

scores Zend_Search_Lucene sur la fréquence du nombre de visites dans un document, donc un document qui a 10 matches du mot PHP noteront supérieur à un document avec seulement 3 matches de PHP. Ce que j'essaie de faire est de passer un certain nombre de mots clés et de marquer en fonction des résultats de ces mots clés. par exemple.

Je passe 5 mots clés disent, PHP, MySQL, Javascript, HTML et CSS que je recherche contre l'indice. Un document a 3 correspondances à ces mots clés et un document a les 4 correspondances, les 4 correspondances les plus élevées. Le nombre d'occurrences de ces mots dans le document ne me concerne pas.

Maintenant, j'ai jeté un coup d'œil à Zend_Search_Lucene_Search_Similarity mais je dois avouer que je ne suis pas sûr (ou pas mal) de savoir comment l'utiliser pour atteindre ce que je suis après.

Est ce que je veux faire possible en utilisant Lucene ou existe-t-il une meilleure solution là-bas?

Répondre

1

Pour ce que je l'ai compris dans le Zend_Search_Lucene_Search_Similarity section du manuel, je commencerais par l'extension de la classe de similarité par défaut pour remplacer la méthode tf (fréquence terme) afin qu'il ne modifie pas le score:

class MySimilarity extends Zend_Search_Lucene_Search_Similarity {  
    public function tf($freq) { 
     return 1.0; // overriding default sqrt($freq); 
    } 
} 

De cette façon, le nombre de correspondances ne doit pas être pris en compte. Pensez-vous que ce serait suffisant?

Ensuite, définir en tant que l'algorithme de similarité par défaut avant l'indexation:

Zend_Search_Lucene_Search_Similarity::setDefault(new MySimilarity()); 
+0

Cela a permis d'améliorer la notation des documents quelque peu, mais il est encore un peu aller, que je pense peut aussi être aidé à un peu de renforcement des termes clés. Merci encore. –

Questions connexes