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
将Ajax内容集成到DNN';s使用SearchModuleBase搜索索引?_Search_Dotnetnuke - Fatal编程技术网

将Ajax内容集成到DNN';s使用SearchModuleBase搜索索引?

将Ajax内容集成到DNN';s使用SearchModuleBase搜索索引?,search,dotnetnuke,Search,Dotnetnuke,我们有一个定制的产品详细视图模块,当URL中的查询字符串包含特定SKU并从产品过滤器模块页面导航时,该模块将检索产品数据。当详细产品视图模块加载时,它将检查查询字符串并通过Ajax加载数据 我想集成DNN的SearchModuleBase,以便自定义模块数据将显示在自定义搜索结果模块中 我已经看过SearchModuleBase Wiki和简介: 如何指定希望DNN的爬虫索引的确切内容? 例如:SKU、页面标题、产品说明 我还想知道如何从产品对象中提交元关键字作为代码中的标签,用于搜索结果 我

我们有一个定制的产品详细视图模块,当URL中的查询字符串包含特定SKU并从产品过滤器模块页面导航时,该模块将检索产品数据。当详细产品视图模块加载时,它将检查查询字符串并通过Ajax加载数据

我想集成DNN的SearchModuleBase,以便自定义模块数据将显示在自定义搜索结果模块中

我已经看过SearchModuleBase Wiki和简介:

如何指定希望DNN的爬虫索引的确切内容? 例如:SKU、页面标题、产品说明

我还想知道如何从产品对象中提交元关键字作为代码中的标签,用于搜索结果

我所看到的所有站点都使用旧的ISearchable类:

这是我目前的代码,但我认为它太基本了,没有指定产品说明、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);
}
返回搜索