Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用kademi search manager API从搜索结果中排除学习模块、课程等和测试页面?_Api_Search_Kademi - Fatal编程技术网

如何使用kademi search manager API从搜索结果中排除学习模块、课程等和测试页面?

如何使用kademi search manager API从搜索结果中排除学习模块、课程等和测试页面?,api,search,kademi,Api,Search,Kademi,我正在使用3 appIndexer使用SearchManager API搜索kademi上的内容: 1.配置文件appsIndexer 2.内容应用索引器 3.博客appsIndexer 这是我的js代码: keyword = params['q']; var json = { "query": { "match": {"_all":keyword} }, "highlight": { "fi

我正在使用3 appIndexer使用SearchManager API搜索kademi上的内容: 1.配置文件appsIndexer 2.内容应用索引器 3.博客appsIndexer

这是我的js代码:

keyword = params['q'];

var json = {
        "query": { 

            "match": {"_all":keyword}
        },

        "highlight": {
            "fields" : {
                "*" : {},
                "content" : {
                    "type" : "plain"
                }
            }
        }
    };

var sm = applications.search.searchManager;

var indexers = sm.appIndexers;
var profileIndexer = indexers.profile;
var contentIndexer = indexers.content;
var blogIndexer = indexers.blogs;

var builder = sm.prepareSearch(profileIndexer, contentIndexer, blogIndexer);
builder.setSource(JSON.stringify(json));
builder.setTypes("profile", "html");

var result = builder.execute().actionGet(); 

http.request.attributes.searchResults = result;
return views.templateView("/theme/debugging.html");
如果您在我的自定义搜索页面上看到,我的搜索结果仍然包含学习内容。请参见下面我的屏幕截图:


如何使用kademi search manager API从搜索结果中排除学习模块、课程等和测试页面?

您应该使用itemType属性指定要包括哪些项目,或者指定要排除哪些项目

最简单的方法是排除电子学习项目。这需要排除模块,但也需要排除模块页面、课程和程序,因为它们都是单独的项目类型

但是,您可能会发现需要明确标识要包括哪些项。可以从任何内容项的“属性”选项卡中设置项类型

不过滤:

术语筛选:

要排除模块和模块页面的项目类型,请使用以下命令:

var searchConfig = {
    "query": {
        "filtered": {
            "query": {
                "match": {"_all":keyword}
            },
            "filter": {
                "not" : {
                   "terms" : { "itemType" : ["program", "course", "module", "modulePage"]}
                 }
            }
        }
    }
};

我正在跟踪你关于堆栈溢出的回答,但我仍然在搜索结果中看到程序页面。这是我的搜索url。请单击
节目前评估(html)
节目后评估(html)
搜索结果。请检查返回的内容项目的项目类型。我想你会发现它不在排除名单上。请注意,可以在每个项上设置itemType,这将覆盖默认值