Try our conversational search powered by Generative AI!

andreas.ek@internetfabriken.se
Mar 22, 2009
  7997
(0 votes)

Easy made search function for EPiServer

Technorati-taggar: ,

This is an easy example to find pages from a seachword into a pagedatacollection in EPiServer PageTextIndex database.

Header for “using”:

---

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EPiServer;
using EPiServer.Core;

---

And the code to do the search in the EPiServer PageTextIndex database:

---

/// <summary>
/// Simple use of PageSearch with default value for PageID and MaxCount.
/// </summary>
/// <param name="SearchWord">The word to search for</param>
/// <returns>PageDataCollection</returns>
public static PageDataCollection PageSearch(string SearchWord)
{
    return PageSearch(SearchWord, PageReference.StartPage.ID, 100);
}

/// <summary>
/// Make a quick search to the EPiServer PageTextIndex database with this function.
/// </summary>
/// <param name="SearchWords">The word to search for</param>
/// <param name="PageID">Page ID of the root page to search from</param>
/// <param name="MaxCount">Maximum count of pages in the result</param>
/// <returns>PageDataCollection</returns>

public static PageDataCollection PageSearch(string SearchWord, int PageID, int MaxCount)
{
    PageDataCollection pages = new PageDataCollection();
    bool onlywholeword = false;

    EPiServer.Core.Html.TextSearchParameters searchparam = new EPiServer.Core.Html.TextSearchParameters(SearchWord, onlywholeword);

    if (searchparam.ContainsSearchWords)
    {
        EPiServer.Core.Html.TextSearchResults result = null;
        EPiServer.DataAccess.PageTextIndexDB xdb = new EPiServer.DataAccess.PageTextIndexDB();
        result = xdb.SearchPages(searchparam, PageID, MaxCount);

        List<EPiServer.Core.Html.PageRank> list = result.ToList();
        foreach (EPiServer.Core.Html.PageRank pageRank in list)
        {
            EPiServer.Core.Html.TextSearchMatch match = pageRank as EPiServer.Core.Html.TextSearchMatch;
            if (match != null)
            {
                pages.Add(match.PageData);
            }
        }
    }
    return pages;
}

 

Any other suggestion to easy search for content in EPiServer pages? It would be great!

Mar 22, 2009

Comments

Sep 21, 2010 10:32 AM

Well, you could use the SearchDataSource

eg:
pagedDataSource.DataSource = searchDataSource.Select(new DataSourceSelectArguments());
/ Flalar

Sep 21, 2010 10:32 AM

You're using the EPiServer.DataAccess namespace directly, which is kind of not allowed.

/Steve

Sep 21, 2010 10:32 AM

The EPiServer police may arrest you:)
/ Anders Hattestad

Sep 21, 2010 10:32 AM

Yes, it's a risk I will take to get happy customers! ;-)

Please login to comment.
Latest blogs
Optimizely and the never-ending story of the missing globe!

I've worked with Optimizely CMS for 14 years, and there are two things I'm obsessed with: Link validation and the globe that keeps disappearing on...

Tomas Hensrud Gulla | Apr 18, 2024 | Syndicated blog

Visitor Groups Usage Report For Optimizely CMS 12

This add-on offers detailed information on how visitor groups are used and how effective they are within Optimizely CMS. Editors can monitor and...

Adnan Zameer | Apr 18, 2024 | Syndicated blog

Azure AI Language – Abstractive Summarisation in Optimizely CMS

In this article, I show how the abstraction summarisation feature provided by the Azure AI Language platform, can be used within Optimizely CMS to...

Anil Patel | Apr 18, 2024 | Syndicated blog

Fix your Search & Navigation (Find) indexing job, please

Once upon a time, a colleague asked me to look into a customer database with weird spikes in database log usage. (You might start to wonder why I a...

Quan Mai | Apr 17, 2024 | Syndicated blog