将Ajax内容集成到DNN';s使用SearchModuleBase搜索索引?
我们有一个定制的产品详细视图模块,当URL中的查询字符串包含特定SKU并从产品过滤器模块页面导航时,该模块将检索产品数据。当详细产品视图模块加载时,它将检查查询字符串并通过Ajax加载数据 我想集成DNN的SearchModuleBase,以便自定义模块数据将显示在自定义搜索结果模块中 我已经看过SearchModuleBase Wiki和简介: 如何指定希望DNN的爬虫索引的确切内容? 例如:SKU、页面标题、产品说明 我还想知道如何从产品对象中提交元关键字作为代码中的标签,用于搜索结果 我所看到的所有站点都使用旧的ISearchable类: 这是我目前的代码,但我认为它太基本了,没有指定产品说明、SKU和页面标题:将Ajax内容集成到DNN';s使用SearchModuleBase搜索索引?,search,dotnetnuke,Search,Dotnetnuke,我们有一个定制的产品详细视图模块,当URL中的查询字符串包含特定SKU并从产品过滤器模块页面导航时,该模块将检索产品数据。当详细产品视图模块加载时,它将检查查询字符串并通过Ajax加载数据 我想集成DNN的SearchModuleBase,以便自定义模块数据将显示在自定义搜索结果模块中 我已经看过SearchModuleBase Wiki和简介: 如何指定希望DNN的爬虫索引的确切内容? 例如:SKU、页面标题、产品说明 我还想知道如何从产品对象中提交元关键字作为代码中的标签,用于搜索结果 我
public class ProductDetailedViewModuleBase : ModuleSearchBase
{
public override IList<SearchDocument> GetModifiedSearchDocuments(ModuleInfo moduleInfo, DateTime beginDateUtc)
{
throw new NotImplementedException();
}
}
公共类ProductDetailedViewModuleBase:ModuleSearchBase
{
公共覆盖IList GetModifiedSearchDocuments(ModuleInfo ModuleInfo,DateTime beginDateUtc)
{
抛出新的NotImplementedException();
}
}
我已将清单文件更改为可搜索。我必须将ISearchable、IPortable和IUpgradeable更改为可搜索、可移植和可升级
我还试图添加SearchModuleBase,但我缺少一些内容:
这是用于生成产品信息的前端代码:
在清单中指明为businessControllerClass的完全限定类和命名空间是实现ModuleSearchBase的类和命名空间 我应该看到这样的情况:
namespace MyModule.Modules.ProductDetailedView.Components
{
public class FeatureController : ModuleSearchBase
{
public override IList<SearchDocument> GetModifiedSearchDocuments(ModuleInfo moduleInfo, DateTime beginDateUtc)
{
// TODO: convert your Product info object list to a SearchDocument object list and return
}
}
}
名称空间MyModule.Modules.ProductDetailedView.Components
{
公共类功能控制器:ModuleSearchBase
{
公共覆盖IList GetModifiedSearchDocuments(ModuleInfo ModuleInfo,DateTime beginDateUtc)
{
//TODO:将产品信息对象列表转换为SearchDocument对象列表并返回
}
}
}
编译并实现此方法后,可以转到设置>计划并运行“站点爬虫”计划任务。将调试器连接到DNN进程,当任务执行时,应该命中GetModifiedSearchDocuments方法
有关此主题的示例代码的完整教程,您可以订阅并签出。清单中指定为businessControllerClass的完全限定类和命名空间是实现ModuleSearchBase的类和命名空间 我应该看到这样的情况:
namespace MyModule.Modules.ProductDetailedView.Components
{
public class FeatureController : ModuleSearchBase
{
public override IList<SearchDocument> GetModifiedSearchDocuments(ModuleInfo moduleInfo, DateTime beginDateUtc)
{
// TODO: convert your Product info object list to a SearchDocument object list and return
}
}
}
名称空间MyModule.Modules.ProductDetailedView.Components
{
公共类功能控制器:ModuleSearchBase
{
公共覆盖IList GetModifiedSearchDocuments(ModuleInfo ModuleInfo,DateTime beginDateUtc)
{
//TODO:将产品信息对象列表转换为SearchDocument对象列表并返回
}
}
}
编译并实现此方法后,可以转到设置>计划并运行“站点爬虫”计划任务。将调试器连接到DNN进程,当任务执行时,应该命中GetModifiedSearchDocuments方法
有关此主题的示例代码的完整教程,您可以订阅并签出。您为
GetModifiedSearchDocuments
提供的代码存根就是这样。它还没有完全实施。您必须用代码替换throw new NotImplementedException()
,以填充将返回的SearchDocument
对象列表。SearchDocument
的属性用于为希望爬虫索引的数据分配值
public override IList<SearchDocument> GetModifiedSearchDocuments(ModuleInfo moduleInfo, DateTime beginDateUtc)
{
var searchDocs = new List<SearchDocument>();
var productList = GetProductList(); //you write this method to return a list of your products
foreach(var product in productList)
{
var searchDoc = new SearchDocument
{
IsActive = true,
CultureCode = moduleInfo.CultureCode,
...
Title = product.YourProductName,
Description = product.YourProductDescription,
Body = product.YourProductDescription,
};
searchDocs.Add(searchDoc);
}
return searchDocs;
}
公共覆盖IList GetModifiedSearchDocuments(ModuleInfo ModuleInfo,DateTime beginDateUtc)
{
var searchDocs=新列表();
var productList=GetProductList();//编写此方法是为了返回产品列表
foreach(产品列表中的var产品)
{
var searchDoc=新的SearchDocument
{
IsActive=true,
CultureCode=moduleInfo.CultureCode,
...
Title=product.YourProductName,
Description=product.YourProductDescription,
Body=product.YourProductDescription,
};
searchDocs.Add(searchDoc);
}
返回搜索文档;
}
你说的那部分:
我还试图添加SearchModuleBase
,但我遗漏了一些东西
我不确定您想要完成什么,但是您不需要在那里做任何更改来获得自定义内容索引 用于
GetModifiedSearchDocuments
的代码存根就是这样。它还没有完全实施。您必须用代码替换throw new NotImplementedException()
,以填充将返回的SearchDocument
对象列表。SearchDocument
的属性用于为希望爬虫索引的数据分配值
public override IList<SearchDocument> GetModifiedSearchDocuments(ModuleInfo moduleInfo, DateTime beginDateUtc)
{
var searchDocs = new List<SearchDocument>();
var productList = GetProductList(); //you write this method to return a list of your products
foreach(var product in productList)
{
var searchDoc = new SearchDocument
{
IsActive = true,
CultureCode = moduleInfo.CultureCode,
...
Title = product.YourProductName,
Description = product.YourProductDescription,
Body = product.YourProductDescription,
};
searchDocs.Add(searchDoc);
}
return searchDocs;
}
公共覆盖IList GetModifiedSearchDocuments(ModuleInfo ModuleInfo,DateTime beginDateUtc)
{
var searchDocs=新列表();
var productList=GetProductList();//编写此方法是为了返回产品列表
foreach(产品列表中的var产品)
{
var searchDoc=新的SearchDocument
{
IsActive=true,
CultureCode=moduleInfo.CultureCode,
...
Title=product.YourProductName,
Description=product.YourProductDescription,
Body=product.YourProductDescription,
};
searchDocs.Add(searchDoc);
}
返回搜索