从 Drupal 发送请求时如何使用 Solr 处理程序

How to use Solr Handlers when sending requests from Drupal

我正在使用 Solr 4.10.2 和 Drupal 7.X,我有 Apache Solr 模块框架在运行并将请求从 Drupal 发送到 Solr。当前,当我们执行搜索时,Drupal 构建查询并将其发送到 Solr。 Solr 只执行查询并 returns 结果而不使用它的内部处理程序,可以通过 SolrConfig.xml.

配置

我想知道是否有一种方法可以只从 Drupal 发送搜索的术语(无需构建查询)并让 Solr 使用 SolrConfig.xml 中声明的内部处理程序来处理请求,构建查询然后 return 数据?

这样做的原因是我们一直在努力通过更改某些字段的 "weight" 来尝试在执行搜索时提高某些结果(我们希望首先是完全匹配,然后是模糊搜索结果)。

我们知道,从后台我们可以使用 "Bias" 函数来提升某些字段,但这对于我们想要实现的目标来说太有限了。

我们也知道我们可以使用 hook_apachesolr_modify_query() 直接从代码端更改从 Drupal 发送的查询,但我们更喜欢更改尽可能少的代码并使用我们已经拥有的 SolrConfig.xml /handlers配置为 return 我们想要的结果。

好的,我们知道怎么做了:

为了在从 Drupal 发送请求时选择 Solr 正在使用的处理程序,我们必须编辑 "hook_apachesolr_query_alter" 函数并添加以下代码:

$query->addParam(‘qt’, ‘MyHandlerName’);

我们做了一些额外的编码,以允许我们直接从后台更改处理程序,以便能够在不接触代码的情况下切换处理程序。