Kentico 按类名搜索

Kentico search by classnames

我在按类名过滤搜索结果时遇到问题。您可以在下面找到我使用的代码片段,希望有人有想法并可以帮助我。

SearchParameters parameters = new SearchParameters()
        {
            SearchFor = "support",
            SearchSort = "##SCORE##",
            Path = "/%",
            ClassNames = "cms.faq",                
            CurrentCulture = "EN-US",
            DefaultCulture = CMS.Helpers.CultureHelper.EnglishCulture.IetfLanguageTag,
            CombineWithDefaultCulture = false,
            CheckPermissions = false,
            SearchInAttachments = false,
            User = (CMS.Membership.UserInfo)CMS.Membership.MembershipContext.AuthenticatedUser,
            SearchIndexes = index.IndexName,
            StartingPosition = 0,
            DisplayResults = 10,
            NumberOfProcessedResults = 10,
            NumberOfResults = 0,
            AttachmentWhere = String.Empty,
            AttachmentOrderBy = String.Empty
        };

我找不到任何关于此的文档,但我想 class 名称应该 return 只是 FAQ 类型的数据,但在我的例子中它是 return 其他数据喜欢文件、新闻和自定义文档。

我也尝试添加类似 ClassNames = "+cms.faq" 或 ClassNames = "##cms.faq##" 的内容,但没有成功:D

谢谢,

刚刚快速浏览了一下v8.2的源码,好像ClassNames参数只是用来过滤搜索到的附件。我不确定这是故意的还是错误。我建议您联系 Kentico support

ClassNames 的正确格式是以分号分隔的页面类型列表,例如CMS.Faq;CMS.News.

Classnames 参数已过时,不应再使用。由于向后兼容,该参数仍然存在,它用于在使用 SQL 搜索时过滤掉搜索附件,如 rocky 已经提到的那样。如果你想按类名过滤搜索结果,你必须在 SearchFor 属性 中指定类名,如下所示:+(apple) +classname:[cms.faq TO cms.faq] +_culture:([en-us TO en-us]