You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kentico 13本地索引Smart Search调用无结果及路径失效问题

Kentico 13 Smart Search 调用问题排查与解决

问题概述

在Kentico 13中配置了名为DefaultSearchIndex的本地智能搜索索引,后台预览搜索结果正常,但通过控制器调用时无返回结果;将索引重命名为Search后可返回结果,但忽略了索引配置的路径限制,返回所有节点数据。

问题排查与解决步骤

1. 针对DefaultSearchIndex调用无结果的问题

  • 索引名称大小写匹配:Kentico索引名称区分大小写,确保代码中"DefaultSearchIndex"与后台配置的索引名称大小写完全一致。
  • 路径格式修正:代码中searchParameters.Path的格式不符合Kentico要求,正确的路径过滤格式需遵循SQL LIKE语法,应保留开头斜杠并以/%结尾。例如目标路径为/Products,应设置为:
    searchParameters.Path = "/Products/%";
    
  • 用户权限检查:后台预览使用管理员权限,而控制器调用的MembershipContext.AuthenticatedUser可能为匿名用户,需确认该用户是否具备访问目标页面的权限。
  • 索引重建验证:后台预览正常不代表索引为最新状态,需在后台Local Indexes > DefaultSearchIndex中点击Rebuild完成索引重建后再测试。

2. 针对重命名为Search后忽略路径配置的问题

  • 避免手动覆盖路径:若索引本身已配置路径限制,控制器代码中不要设置searchParameters.Path,否则手动设置的路径会覆盖索引的内置配置。
  • 索引路径配置确认:检查DefaultSearchIndex的Content > Path设置是否为/目标路径/%格式,且已完成索引重建。

修改后的示例代码

IEnumerable<string> searchIndexes = new List<string> { "DefaultSearchIndex" };

int pageNumber = 1;
int pageSize = 1000;
UserInfo searchUser = MembershipContext.AuthenticatedUser;
string cultureCode = "en-us";
bool combineWithDefaultCulture = true;

// 初始化页面搜索参数
SearchParameters searchParameters = SearchParameters.PrepareForPages(searchQuery, searchIndexes, pageNumber, pageSize, searchUser, cultureCode, combineWithDefaultCulture);

// 若索引已配置路径限制,注释以下行;若需动态设置路径,确保格式为"/目标路径/%"
// searchParameters.Path = "/your-target-path/%";

// 执行搜索
SearchResult searchResult = SearchHelper.Search(searchParameters);

额外排查建议

  • 开启搜索日志:在Settings > System > Debug > Search logging中开启日志,查看搜索请求的详细参数与返回结果,定位问题根源。
  • 检查搜索关键词:确保searchQuery参数已正确传入有效关键词,避免空字符串导致无结果。
  • 文化代码匹配:确认cultureCode与目标页面的语言版本一致,combineWithDefaultCulture设置符合业务需求。

内容的提问来源于stack exchange,提问作者Akhilesh Sehgal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 10:00:26