使用search_api_solr,如何在使用solr 6.x时应用基于字段的有效增强?
我在drupal 8网站上将solr后端用于search_api。 我已将分类术语参考字段()的值添加field_promoted_search到索引中。 如果一项内容的field_promoted_search价值与搜索字词匹配,我希望它得到很大的提升(例如^ 1000),将其推到搜索结果的顶部。 admin/config/search/search-api/index/content/fields在服务器使用solr <6时,按预期的方式添加高的“提升”值,但是由于移至6.1.0,因此无法按预期的方式工作。这可能是因为search_api_solr / solarium使用的是乘法提升而不是加法运算。这对我来说似乎没有用,因为这使其他领域获得的相关性成倍增加,而不是仅仅特权field_promoted_search,尽管我不确定这方面。 我尝试使用将增强的查询为此提升的搜索字段添加到日光浴室查询中hook_search_api_solr_query_alter。这要求我将每个搜索关键字作为增强查询进行传递,并且效果似乎受到关键字顺序的影响(而且我的结果并没有获得最高排名)。 $keys = $query->getKeys(); unset($keys['#conjunction']); // Boost results where search term matches promoted search field. $boost_keys = []; $boost_value = 1000; foreach ($keys as $key) { $boost_keys[] = '"' . $key . '"^' . $boost_value; } $solarium_query->getEDisMax()->setBoostQuery('ss_promoted_search:' . implode(' OR ', …