【问题标题】:How can I always force most recent articles with the exact phrase using Drupal Apache Solr?如何始终使用 Drupal Apache Solr 强制使用确切短语的最新文章?
【发布时间】:2025-11-24 16:50:02
【问题描述】:

我想在正文或标题的任何地方找到准确的短语结果。它必须从最新到最旧的顺序排列。我得到非常接近结果的唯一方法是通过这个钩子在我的所有搜索中强制引用:

/**
 * Implements hook_apachesolr_query().
 */
function hcp_node_apachesolr_query_prepare($query) {  
  // Adding quotes to all searches so it gives an accurate search result
  $search_result = $query->getParam('q');
  $has_quotes = preg_match('/^(["\']).*\1$/m', $search_result);
  if(!$has_quotes) {
    $query->replaceParam('q', '"' . $search_result . '"');
  }
}

我的偏见设置:

  • 结果偏差:全部设置为忽略,但最近创建的设置为 10
  • 类型偏差:全部设置为忽略
  • 字段偏差:全部设置为省略。

这似乎适用于两个或三个单词的短语,但如果我搜索一篇文章的整个标题,它就找不到任何东西。

我尝试将标题和完整的渲染内容字段偏差设置为同一事物 (21)。同样,它会显示出良好的结果,但不会按最近的顺序排列(我认为这非常接近,但希望它首先显示最近的)。

我还尝试更新我的 schema.xml:将 WhitespaceTokenizerFactory 更新为 KeywordTokenizerFactory,但我没有得到好的结果。

【问题讨论】:

    标签: drupal solr drupal-7


    【解决方案1】:

    我就是这样解决这个问题的:

    • 已安装 Apache Solr 术语邻近模块已将字段偏差更新为 .3
    • 对于标题和完整呈现的内容(其余设置为 omit) 将术语接近度设置为 .1
    • 将最近创建的设置为 10

    仅供参考,我尝试了不同的设置,这似乎是最好的。

    【讨论】:

      最近更新 更多