我在搜索搜索关键字的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,显示负责任的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 :(得分:0)
如果您将相同的内容编入两个不同的字段,则可以单独权衡这些字段。一个字段会扩展同义词,而另一个字段不会 - 允许您给第二个确切字段赋予更高的权重。
您可以使用 import org.joda.time.LocalDate;
Date myDate = new Date();
LocalDate localDate = LocalDate.fromDateFields(myDate);
System.out.println("My date using Date" Nov 18 11:23:33 BRST 2016);
System.out.println("My date using joda.time LocalTime" 2016-11-18);
将相同的内容编入两个不同的字段,然后在查询时使用<copyField source="content" dest="content_synonyms" />
,以qf=content^2 content_synonyms
的点击次数为{{1}中点击量的两倍}}