我在使用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
};
我找不到任何关于此的文档,但我认为类名应仅返回FAQ类型的数据,但在我的情况下,它会将其他数据返回到类似文件,新闻和自定义文档。
我还尝试添加类似ClassNames =" + cms.faq"或ClassNames =" ## cms.faq ##"但是没有运气:D
谢谢,
答案 0 :(得分:4)
Classnames参数已过时,不应再使用它。由于向后兼容性,该参数仍然存在,当使用SQL搜索时,它被用于过滤掉搜索附件。如果您想通过ClassNames过滤搜索结果,则必须在 SearchFor 属性中指定类名称,如下所示:+(apple) +classname:[cms.faq TO cms.faq] +_culture:([en-us TO en-us]
答案 1 :(得分:1)
我刚刚浏览了v8.2的源代码,似乎ClassNames
参数仅用于过滤掉搜索到的附件。我不确定这是故意还是错误。我建议您联系Kentico support。
ClassNames
的正确格式是以分号分隔的页面类型列表,例如CMS.Faq;CMS.News
。