用途:整理 Drupal Search API 索引配置与搜索权重(boost)实践,适用于需要按精选标记或互动数据调整搜索结果排序的场景。
字段配置要求:布尔提升字段应配置为 type: boolean 而非 integer;计数类字段(如 flag 计数,由 flag_search_api 模块管理)使用 type: integer。可用 drush config:set search_api.index.{index_name} field_settings.field_featured.type boolean 修改字段类型。
主要能力:1) 自定义布尔 boost 处理器,扩展 ProcessorPluginBase,在 preprocess_index 阶段用 $item->setBoost($item->getBoost() * boost_factor) 做乘法提升;2) 数字字段 boost,公式为 boost += field_value * boost_factor,支持 max 等聚合;3) 推荐提升系数:精选内容 1.5x–3.0x,书签计数 0.01–0.05,收藏计数 0.1–0.5,浏览量 0.001–0.01。
处理器冲突:同一字段被多个处理器作用会互相覆盖,应从 number_field_boost 中移除该字段,布尔或复杂逻辑用自定义处理器,简单数值用 number_field_boost。
配置管理与限制:drush config:set 会出现副作用(如 server 变为 null)时,可用 drush php:eval 直接修改活动配置并保存;改后用 drush config:get 验证、config:export 导出、检查 git diff。修改 Solr 服务器配置可能导致自定义字段类型(如 solr_text_custom:ngramstring)被降级为 text,破坏部分匹配,需用 PHP 恢复。
重新索引:变更字段类型、提升系数或处理器后须重新索引,流程为 drush cr、drush search-api:clear {index_name}、drush search-api:index {index_name},并用 search-api:status 检查。提升不生效可按处理器启用、字段类型、完整重索引、冲突处理器、清缓存顺序排查。