2016-11-18 63 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> 

下面是代碼來發送的查詢過濾器SOLR

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

回答

0

如果指數相同的內容在兩個不同的領域,你可以獨立斟酌這些領域。一個領域會擴展同義詞,而另一個領域則不會 - 讓您能夠對第二個精確領域賦予更高的權重。

你可以索引同樣的內容分爲兩個不同的領域,通過使用<copyField source="content" dest="content_synonyms" />,然後查詢給安打content兩倍的重量爲content_synonyms命中時使用qf=content^2 content_synonyms

+0

我試過使用上面的方法,但它不工作。 – mangeshr