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