2010-11-01 9 views
1

Supposons qu'un utilisateur entre l'expression de recherche "world peace". Cependant, disons aussi que l'index contient un document avec le titre "aurons-nous la paix dans le monde" et un document avec le titre "paix dans le monde, où es-tu?".Résultats des résultats en fonction de l'expression fournie

Maintenant, y a-t-il un moyen de donner aux documents commençant par «world peace» un coup de pouce plus important que d'autres documents? En d'autres termes, je voudrais des correspondances où le titre commence par la phrase à amplifier. Est-ce possible avec Solr?

+0

ce n'est pas le tri. vous devriez renommer le titre pour «marquer des résultats selon la phrase fournie» ou plus. – Karussell

+0

Fait, titre changé. – sbrattla

Répondre

0

Vous pouvez réaliser quelque chose de proche de ce que vous voulez en appliquant un charFilter. Il affecte la chaîne d'entrée avant la tokenisation. Dans l'exemple ci-dessous, le charFilter ajoutera AAAA au début du champ auquel il est appliqué. Vous pourriez alors être en mesure d'ajouter AAAA à votre requête pour forcer Solr à favoriser les phases correspondant au début du titre. En savoir plus sur cette approche et d'autres conseils Solr se trouve ici:

http://robotlibrarian.billdueber.com/tag/stupid_solr_tricks/

<fieldtype name="title_anchor" class="solr.TextField" positionIncrementGap="1000"> 
<analyzer> 
    <charFilter class="solr.PatternReplaceCharFilterFactory" 
    pattern="^(.*)$" replacement="AAAA $1" />  
    <tokenizer class="solr.ICUTokenizerFactory"/> 
    <filter class="solr.ICUFoldingFilterFactory"/> 
    <filter class="solr.SynonymFilterFactory" 
      synonyms="syn.txt" 
      ignoreCase="true" expand="false"/> 
    <filter class="solr.CJKWidthFilterFactory"/> 
    <filter class="solr.CJKBigramFilterFactory"/> 
</analyzer>