World is now on Opti ID! Learn more

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

Please login to comment.
Latest blogs
Make Global Assets Site- and Language-Aware at Indexing Time

I had a support case the other day with a question around search on global assets on a multisite. This is the result of that investigation. This co...

dada | Jun 26, 2025

The remote server returned an error: (400) Bad Request – when configuring Azure Storage for an older Optimizely CMS site

How to fix a strange issue that occurred when I moved editor-uploaded files for some old Optimizely CMS 11 solutions to Azure Storage.

Tomas Hensrud Gulla | Jun 26, 2025 |

Enable Opal AI for your Optimizely products

Learn how to enable Opal AI, and meet your infinite workforce.

Tomas Hensrud Gulla | Jun 25, 2025 |

Deploying to Optimizely Frontend Hosting: A Practical Guide

Optimizely Frontend Hosting is a cloud-based solution for deploying headless frontend applications - currently supporting only Next.js projects. It...

Szymon Uryga | Jun 25, 2025

World on Opti ID

We're excited to announce that world.optimizely.com is now integrated with Opti ID! What does this mean for you? New Users:  You can now log in wit...

Patrick Lam | Jun 22, 2025

Avoid Scandinavian Letters in File Names in Optimizely CMS

Discover how Scandinavian letters in file names can break media in Optimizely CMS—and learn a simple code fix to automatically sanitize uploads for...

Henning Sjørbotten | Jun 19, 2025 |