代码之家  ›  专栏  ›  技术社区  ›  Tig7r

与DNN搜索相结合(添加搜索功能以拥有搜索输入、搜索结果和索引定制模块)

  •  0
  • Tig7r  · 技术社区  · 6 年前

    我们有自己的自定义搜索输入模块、搜索结果模块和一个在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 回复  |  直到 6 年前
        1
  •  2
  •   Fix It Scotty    6 年前

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

    A)调用搜索结果服务中搜索控制器的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);
    

    从那里,您可以从search results.results列表中获取DNN搜索结果并返回到搜索结果模块UI。

    Q)如何让DNN站点爬虫对自定义模块上的内容进行爬网。

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

    这是本次讨论的一个大主题。你可以看到 other posts 我除了得到一个 full tutorial from DNNHero.com 如果你选择订阅。