根据关键字的位置对solr中的建议进行排序

时间:2018-01-11 09:59:49

标签: solr search-suggestion

我在solr 6.5版本中使用Suggest组件。我已经配置了BlendidInfixLookupFactory来根据搜索关键字对建议进行排序。

以下是我目前的配置:

<searchComponent name="suggest" class="solr.SuggestComponent">
    <lst name="suggester">
      <str name="name">mySuggester</str>
      <str name="lookupImpl">BlendedInfixLookupFactory</str>
	  <str name="dictionaryImpl">DocumentDictionaryFactory</str>   
      <str name="field">title</str>
	  <str name="suggestAnalyzerFieldType">text_general</str>
	  <str name="blenderType">position_linear</str>
	  <str name="numFactor">20</str>
	</lst>
  </searchComponent>
  
  <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
    <lst name="defaults">
      <str name="suggest">true</str>
      <str name="suggest.count">10</str>
    </lst>
    <arr name="components">
      <str>suggest</str>
    </arr>
  </requestHandler> 

但它不是基于关键字的位置进行排序,而是以随机顺序返回,并且不确定正在遵循的顺序。根据solr文档,它应该根据位置排序,但它不按该顺序工作。

例如:我的搜索关键字为蓝色

我的预期结果:蓝色,蓝色的鲸鱼,蓝色的水,天蓝色,还有一个蓝色的玩具

实际结果:天蓝色,蓝鲸,有蓝色玩具,蓝色水,蓝色

有人可以告诉我是否可以这样排序?

1 个答案:

答案 0 :(得分:2)

根据您的配置,您没有对这些建议使用任何权重,因此值始终为0.因此对于所有建议,position_linear将与计算相同的逻辑相同是position_linear:weightFieldValue *(1 - 0.10 * position )。

您可以为所有建议添加一个可以具有常量值的字段,因此当您尝试执行线性位置时,它会按位置增加位置

我希望这会有所帮助