如何禁用列表中的索引搜索,只获取搜索结果中的文章索引?
How to disable index searching on the list and just get the articles indexed on search results?
使用 2sxc Blogg App 并在使用搜索时,我得到了列出的博客主页的结果,其中仅列出了博客主页和所有将用户带到博客主页的文章标题,所以它们非常多无用的链接,然后我得到带有文章链接的实际文章。所以我需要抑制博客页面本身,而不是它的动态 children(文章)。
/help <-- 不,谢谢,你的链接没用。
/help/post <-- 是的,请列出所有。
知道如何实现吗?我被定向到 CustomizeData() 文档,但我不知道该怎么做。当前一组在主博客列表页面如下:
@functions{
/// <summary>
/// Populate the search - ensure that each entity has an own url/page
/// </summary>
/// <param name="searchInfos"></param>
/// <param name="moduleInfo"></param>
/// <param name="startDate"></param>
public override void CustomizeSearch(Dictionary<string, List<ToSic.SexyContent.Search.ISearchInfo>> searchInfos, DotNetNuke.Entities.Modules.ModuleInfo moduleInfo, DateTime startDate)
{
foreach (var si in searchInfos["SearchIndex"])
{
si.QueryString = "post=" + AsDynamic(si.Entity).UrlKey;
}
}
}
欢迎使用 Whosebug ;)
基本的 DNN 索引向每个模块询问其拥有的数据,然后以此为基础构建索引。由于一个模块可以有多个搜索项,它们每个都是自己的 "document" 可以配置 - 例如 URL 在搜索结果中使用什么。为了使视图开发人员能够自定义这些东西,2sxc 有这个 hook 来自定义搜索结果。所以它的工作方式是...
- 后端收集数据
- 然后检测到正在构建搜索索引(而不是查看页面的用户)
- 然后调用代码进行可选的重新配置
- 然后将项目传递给 DNN 搜索
那么代码 应该 做的是获取后端准备的每个项目,更改 url 以使用,然后让系统的其余部分发挥它的魔力。如果这不起作用,则有几种可能性:
- DNN 或 2sxc 中的某些东西坏了(我真的希望不是它)
- 代码导致错误,由于它发生在后台,所以您看不到它
- 数据没有被传递给代码,例如因为它被过滤掉了——例如,旧数据没有在索引中更新,因为索引器只会请求新数据,因此旧数据无论您如何更新代码,都不会在正常的重新索引上更新。
让我们试着找出原因是什么
- 打开应用程序查询 https://azing.org/2sxc/r/T1GdqnNa 和 select **Blog Posts for Home and Tags",然后测试-运行 查询以查看它是否给你结果。如果没有,查询可能有问题。在屏幕上看起来 json 的测试结果中,请检查集合 "SearchIndex" 中是否有某些东西 - 这是数据跳过分页和 returns 所有项目的流。如果这是空的,请返回给我们。注意:如果您没有得到任何结果,请检查查询使用的测试参数 (右侧的框),并可能编辑 ModuleId 以防错误
- 检查您是否在 DNN 事件日志中看到任何事件。如果不这样做,请确保在 DNN 中重新索引整个数据并再次检查。
Post 你的结果,所以我们可以检查如何解决这个问题;)
使用 2sxc Blogg App 并在使用搜索时,我得到了列出的博客主页的结果,其中仅列出了博客主页和所有将用户带到博客主页的文章标题,所以它们非常多无用的链接,然后我得到带有文章链接的实际文章。所以我需要抑制博客页面本身,而不是它的动态 children(文章)。
/help <-- 不,谢谢,你的链接没用。
/help/post <-- 是的,请列出所有。
知道如何实现吗?我被定向到 CustomizeData() 文档,但我不知道该怎么做。当前一组在主博客列表页面如下:
@functions{
/// <summary>
/// Populate the search - ensure that each entity has an own url/page
/// </summary>
/// <param name="searchInfos"></param>
/// <param name="moduleInfo"></param>
/// <param name="startDate"></param>
public override void CustomizeSearch(Dictionary<string, List<ToSic.SexyContent.Search.ISearchInfo>> searchInfos, DotNetNuke.Entities.Modules.ModuleInfo moduleInfo, DateTime startDate)
{
foreach (var si in searchInfos["SearchIndex"])
{
si.QueryString = "post=" + AsDynamic(si.Entity).UrlKey;
}
}
}
欢迎使用 Whosebug ;)
基本的 DNN 索引向每个模块询问其拥有的数据,然后以此为基础构建索引。由于一个模块可以有多个搜索项,它们每个都是自己的 "document" 可以配置 - 例如 URL 在搜索结果中使用什么。为了使视图开发人员能够自定义这些东西,2sxc 有这个 hook 来自定义搜索结果。所以它的工作方式是...
- 后端收集数据
- 然后检测到正在构建搜索索引(而不是查看页面的用户)
- 然后调用代码进行可选的重新配置
- 然后将项目传递给 DNN 搜索
那么代码 应该 做的是获取后端准备的每个项目,更改 url 以使用,然后让系统的其余部分发挥它的魔力。如果这不起作用,则有几种可能性:
- DNN 或 2sxc 中的某些东西坏了(我真的希望不是它)
- 代码导致错误,由于它发生在后台,所以您看不到它
- 数据没有被传递给代码,例如因为它被过滤掉了——例如,旧数据没有在索引中更新,因为索引器只会请求新数据,因此旧数据无论您如何更新代码,都不会在正常的重新索引上更新。
让我们试着找出原因是什么
- 打开应用程序查询 https://azing.org/2sxc/r/T1GdqnNa 和 select **Blog Posts for Home and Tags",然后测试-运行 查询以查看它是否给你结果。如果没有,查询可能有问题。在屏幕上看起来 json 的测试结果中,请检查集合 "SearchIndex" 中是否有某些东西 - 这是数据跳过分页和 returns 所有项目的流。如果这是空的,请返回给我们。注意:如果您没有得到任何结果,请检查查询使用的测试参数 (右侧的框),并可能编辑 ModuleId 以防错误
- 检查您是否在 DNN 事件日志中看到任何事件。如果不这样做,请确保在 DNN 中重新索引整个数据并再次检查。
Post 你的结果,所以我们可以检查如何解决这个问题;)