【发布时间】: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,但我没有得到好的结果。
【问题讨论】: