如何禁用列表中的索引搜索,只获取搜索结果中的文章索引?

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 来自定义搜索结果。所以它的工作方式是...

  1. 后端收集数据
  2. 然后检测到正在构建搜索索引(而不是查看页面的用户)
  3. 然后调用代码进行可选的重新配置
  4. 然后将项目传递给 DNN 搜索

那么代码 应该 做的是获取后端准备的每个项目,更改 url 以使用,然后让系统的其余部分发挥它的魔力。如果这不起作用,则有几种可能性:

  1. DNN 或 2sxc 中的某些东西坏了(我真的希望不是它)
  2. 代码导致错误,由于它发生在后台,所以您看不到它
  3. 数据没有被传递给代码,例如因为它被过滤掉了——例如,旧数据没有在索引中更新,因为索引器只会请求新数据,因此旧数据无论您如何更新代码,都不会在正常的重新索引上更新。

让我们试着找出原因是什么

  1. 打开应用程序查询 https://azing.org/2sxc/r/T1GdqnNa 和 select **Blog Posts for Home and Tags",然后测试-运行 查询以查看它是否给你结果。如果没有,查询可能有问题。在屏幕上看起来 json 的测试结果中,请检查集合 "SearchIndex" 中是否有某些东西 - 这是数据跳过分页和 returns 所有项目的流。如果这是空的,请返回给我们。注意:如果您没有得到任何结果,请检查查询使用的测试参数 (右侧的框),并可能编辑 ModuleId 以防错误
  2. 检查您是否在 DNN 事件日志中看到任何事件。如果不这样做,请确保在 DNN 中重新索引整个数据并再次检查。

Post 你的结果,所以我们可以检查如何解决这个问题;)