与DNN搜索集成(将搜索功能添加到自己的搜索输入,搜索结果和索引自定义模块中)

时间:2018-07-26 14:43:20

标签: search dotnetnuke

我们在DotNetNuke网站上有自己的自定义搜索输入模块,搜索结果模块和用于显示产品的模块。

当前,我们通过查询字符串将搜索词从“搜索输入”模块发送到“自定义搜索结果模块”页面,该查询字符串将通过Ajax显示来自我们ERP系统的产品。我现在也想包括DNN爬网的结果(页面等)。

  1. 如何将搜索查询发送到DNN端以返回结果?
  2. 我可以将哪些代码添加到我们的“搜索结果”页面?

我还想知道我们如何让DNN网站搜寻器在使用Ajax的自定义模块上搜寻页面内容。例如:我们有一个产品过滤器模块,它将从我们的ERP系统中检索结果:https://www.parrot.co.za/Product-Categories/Product-Filter?Category=126&whiteboards

我在查看此页面时未回答我的特定问题:http://www.dnnsoftware.com/community-blog/cid/154913/integrating-with-search-introducing-modulesearchbase

1 个答案:

答案 0 :(得分:2)

Q)如何将搜索查询发送到DNN端以返回结果?

A)在您的搜索结果服务中调用SearchController的ModuleSearch方法以获取DNN搜索结果:

using DotNetNuke.Services.Search.Controllers;
using DotNetNuke.Services.Search.Entities;
...


var query = new SearchQuery
{
    PageSize = request.PageSize,
    PageIndex = (request.PageNum > 0 ? request.PageNum : 1),
    SortField = SortFields.Relevance,
    SortDirection = SortDirections.Descending,
    KeyWords = request.Keyword,
    Tags = new List<string>() { "tag1", "tag2" },
    PortalIds = new List<int> { PortalSettings.PortalId },
    WildCardSearch = true,
};

var searchResults = SearchController.Instance.ModuleSearch(query);

从那里,您可以从searchResults.Results列表中获得DNN搜索结果,并返回到搜索结果模块用户界面。

Q)我们如何让DNN网站搜寻器在我们的自定义模块上搜寻内容。

A)通过在自定义模块中实现ModuleSearchBase类,可以为自定义搜索结果数据提供DNN站点爬网程序。这允许自定义数据进入DNN搜索结果,因此您可以利用上述查询API来获取数据。

这是此讨论的重要主题。如果您选择订阅,除了获得other posts之外,您还可以看到full tutorial from DNNHero.com我在该主题上所做的事情。