2016-11-18 5 views
0

Ich habe ein Problem beim Auflisten der Solr Ergebnis auf der Suche nach einem Schlüsselwort, das ein Synonymwert ist.Solr Synonyme Werte Ranking Ausgabe

Im Folgenden finden Sie die Synonyme Dateien für die französisch-Website

Décorateur, Responsable Visuel, Acheteur 
Responsable de la formation, Directeur de la formation 
Directeur général,Chef de secteur 

Es gibt keine explizite Sortierreihenfolge definieren, so zur Zeit seiner solr Ergebnisse auf der Grundlage der Partitur sortiert werden.

Wenn der Benutzer mit dem Schlüsselwort "Responsable Visuel" sucht, wird es oben angezeigt, aber wenn die Suche mit dem Schlüsselwort "Acheteur" durchgeführt wird, wird es nicht oben angezeigt, aber andere Datensätze zu ihm Synonyme Werte dh Décorateur Responsable Visuel wird angezeigt und zeigt dann das Ergebnis mit dem Stichwort "Acheteur" an. Wie kann ich das Ergebnis unter den oben gesuchten Synonymen anzeigen lassen?

Im Folgenden wird Code zu schema_extra_fields.xml & schema_extra_types.xml hinzugefügt.

<fields> 
    <dynamicField name="tm_fr_*" type="text_fr" indexed="true" stored="true" multiValued="true" termVectors="true"/> 
    <copyField source="tm_fr_field_ad_title" dest="rank_content_fr"/> 
</fields> 

<types> 
<fieldType name="text_fr" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt" /> 
     <tokenizer class="solr.StandardTokenizerFactory" /> 
     <filter class="solr.SynonymFilterFactory" synonyms="synonyms_fr.txt" ignoreCase="true" expand="true" /> 
     <filter class="solr.FrenchLightStemFilterFactory" /> 
     <filter class="solr.RemoveDuplicatesTokenFilterFactory" /> 
    </analyzer> 
    <analyzer type="query"> 
     <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt" /> 
     <tokenizer class="solr.StandardTokenizerFactory" /> 
     <filter class="solr.FrenchLightStemFilterFactory" /> 
     <filter class="solr.RemoveDuplicatesTokenFilterFactory" /> 
    </analyzer> 
</fieldType> 
</types> 

Unten ist der Code der Abfragefilter gesendet

$call_args['params']['qf'][] = 'tm_fr_field_ad_title^90 rank_content_fr'; 

Antwort

0

Wenn Sie Index der gleiche Inhalt auf zwei verschiedenen Feldern Solr, Sie unabhängig die Felder wiegen. Ein Feld würde die Erweiterung von Synonymen verwenden, während das andere nicht - damit Sie dem zweiten, genauen Feld ein höheres Gewicht geben könnten.

Sie indizieren können den gleichen Inhalt in zwei verschiedenen Bereichen von <copyField source="content" dest="content_synonyms" /> verwenden und dann qf=content^2 content_synonyms Verwendung bei der Abfrage Treffer in content doppelt so viel Gewicht zu geben, wie in content_synonyms trifft.

+0

Ich habe versucht, mit der oben genannten Methode, aber es funktioniert nicht. – mangeshr