Easy made search function for EPiServer
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!
Well, you could use the SearchDataSource
eg:
pagedDataSource.DataSource = searchDataSource.Select(new DataSourceSelectArguments());
/ Flalar
You're using the EPiServer.DataAccess namespace directly, which is kind of not allowed.
/Steve
The EPiServer police may arrest you:)
/ Anders Hattestad
Yes, it's a risk I will take to get happy customers! ;-)