andreas.ek@internetfabriken.se
Mar 22, 2009
  8652
(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

Steve Celius
Steve Celius 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 Opal: How to Build Effective Workflow Agents

If you're building workflow agents in Optimizely Opal, this post covers how specialized agents pass context to each other, why keeping agents small...

Andre | May 20, 2026

ReviewPR: An Azure Function That Reviews Your Azure DevOps Pull Requests With Claude

A while back I wrote about an  Azure Function App for PDF creation that we use to offload PDF rendering from our Optimizely DXP site. That same...

KennyG | May 19, 2026

Accelerating Optimizely CMS and Commerce upgrades with agentic AI (Part 2 of 2)

The Real Transformation in Optimizely CMS 13: Why the Upgrade Itself Is the Easy Part. A field-tested playbook for enterprise teams moving from...

Hung Le Hoang | May 18, 2026

Is the most powerful AI model really the best value?

Artificial Intelligence is already becoming part of everyday software development. Developers now use AI tools to generate code, write documentatio...

K Khan | May 16, 2026