wordpress - 如果我们实现自定义搜索而不是默认搜索,是否会覆盖 Elasticpress 搜索?
问题描述
问题
我们实现了此代码段,以便在 WP 上仅针对标题而不是默认标题进行自定义搜索。
function __search_by_title_only( $search, $wp_query )
{
global $wpdb;
if(empty($search)) {
return $search; // skip processing - no search term in query
}
$q = $wp_query->query_vars;
$n = !empty($q['exact']) ? '' : '%';
$search =
$searchand = '';
foreach ((array)$q['search_terms'] as $term) {
$term = esc_sql($wpdb->esc_like($term));
$search .= "{$searchand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
$searchand = ' AND ';
}
if (!empty($search)) {
$search = " AND ({$search}) ";
if (!is_user_logged_in())
$search .= " AND ($wpdb->posts.post_password = '') ";
}
return $search;
}
add_filter('posts_search', '__search_by_title_only', 500, 2);
我们遇到的问题是,我们认为在搜索任何单词时没有调用 ElasticSearch 服务器,因此(我们认为)正在调用数据库。
重现步骤
- 1.- 访问 zocalo.com
- 2.- 点击右侧的放大镜图标
- 3.- 输入任何单词:“pegasus”是个好词
- 4.- 您将获得一些带有缩略图的结果(可能少于 30 个),但显示需要很长时间。(超过 4-5 秒)。
- 5.- 如果输入一个新词(墨西哥),返回结果需要超过 34 秒。
- 6.- 请不要介意下面显示的附加列表。那是使用另一个插件。
预期行为
我们正在寻求优化对数据库的查询时间,因为我们有大约 200 万条记录,我们需要真正快速地从搜索中提供内容
环境信息(适用于任何操作系统和操作系统)
- ElasticPress 版本:3.5.4
- 弹性搜索版本:7.9
- WordPress:5.7
解决方案
推荐阅读
- c# - Polly Policy.TimeoutAsync 没有给出 TimeoutRejected 异常
- db2 - 前端可以使用服务程序内部的程序吗?
- puppeteer - Nestjs框架中的构造函数问题
- onnx - ML.NET 导出到 ONNX
- ios - 如何使用 .crt SSL 证书文件连接 MQTT 服务器?
- prometheus - Alertmanager:Slack 通知 - x509:由未知机构签署的证书
- google-sheets - 可以使用 IMPORTXML 函数将文本从 Grammarly 抓取到 google 电子表格吗?
- django - 如何将 filter_horizontal 与 TabularInline 和 .through 一起使用?
- python - 修复由`sudo pip`/`sudo pip3`错误安装的python包
- mongodb - mongodb 使用 db.update() 更新多个数组元素