2016-11-18 3 views
0

同義語の値であるキーワードを検索する際にsolrの結果をリストする際に問題が発生しました。以下はSolr同義語の値ランキングの問題

フランス語サイト

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

の同義語のファイルがあり、明示的なソート順序が定義されていないため、現在、Solrの結果はスコアに基づいてソートされています。

「Responsable Visuel」というキーワードで検索すると上部に表示されますが、キーワード「Acheteur」で検索された場合は上部には表示されませんが、それに関連する他のレコード、つまりDécorateur Responsable Visuelが表示され、「Acheteur」というキーワードで結果が表示されます。検索された一番上の同義語の値の中にどのように結果を表示することができますか?

以下はそれぞれschema_extra_fields.xml & schema_extra_types.xmlに追加されたコードです。以下は

<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> 

あなたはインデックス2つの異なるフィールドに同じコンテンツを、あなたは独立してこれらのフィールドを量ることができる場合

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

答えて

0

をSolrのためにクエリフィルタを送っするためのコードです。 1つのフィールドは拡張の同義語になり、もう1つのフィールドは同義語になりません。これにより、2番目の正確なフィールドに大きな重みを付けることができます。

あなた指数<copyField source="content" dest="content_synonyms" />を使用して、その後、content_synonymsに当たるようcontent二倍の重量にヒットを与えることを照会するときqf=content^2 content_synonymsを使用することにより、2つの異なるフィールドに同じ内容をすることができます。

+0

上記の方法で試してみましたが、うまくいきません。 – mangeshr