Click here to Skip to main content
11,432,427 members (65,859 online)
Click here to Skip to main content

Microsoft Content Management Server Search Controls (C#)

, 27 Jun 2005 CPOL
Rate this:
Please Sign up or sign in to vote.
Gives Content Management Server web sites search capability using SharePoint Portal Server as the search engine.

Sample Image - sample.gif

Introduction

This set of user controls gives Microsoft Content Management Server (MCMS) web sites search capability using SharePoint Portal Server (SPS) as the search engine. It uses SPS' Search web service to provide a simple key word search. A search option is provided to select specific Content Index. The search results are displayed in a customizable DataGrid.

A VB.NET version of this set of user controls is available here.

SharePoint Setup

Please reference Emmanuel Desigaud's article on how to set up SPS for search. Basically, you need to set up a Content Index and add a Content Source. Also, make sure users performing searches in your CMS site have access to the SPS Search web service.

Installation

  1. Copy SPSSearch.xml to your XML directory if you have one, or any location in your web site. If you like to include additional columns in your search results, add the additional fields to the select statement. You can also change the maximum number of search results returned, in <Count>500</Count>, if so desired.
  2. Copy user control SearchInput to your user controls directory. The default search button is a text button. If you like an image button instead, change the Visible attribute of SearchButton and SearchImageButton accordingly and update the ImageUrl of the SearchImageButton. Do not delete either button even if you are not using both.
  3. Copy user control SearchResults to your user controls directory. If you have added additional fields in SPSSearch.xml, customize SearchResult.ascx to include those fields. In SearchResults.aspx.cs, qualify namespace SPSSearch in line 18: using ProjectName.SPSSearch; with your project name.
  4. Copy QueryService.cs and SearchUtilities.cs to your class directory.
  5. Copy Search.css to your CSS directory.
  6. In your web.config, add the following keys to the appSettings:
    <appSettings>
        <add key="QuestechSystems.SPSSearchUrl" 
          value="http://<SPSServer>/_vti_bin/search.asmx" />
        <add key="QuestechSystems.SPSSearchXml" value="[Url to SPSSearch.xml]" />
        <add key="QuestechSystems.SPSSearchIndexesText" 
          value="[A comma delimited list of Content Indexes Display Name]" />
        <add key="QuestechSystems.SPSSearchIndexesValue" 
          value="[A comma delimited list of Content Indexes]" />
    </appSettings>

    For example:

    <appSettings>
        <add key="QuestechSystems.SPSSearchUrl" 
          value="http://<SPSServer>/_vti_bin/search.asmx" />
        <add key="QuestechSystems.SPSSearchXml" 
          value="/<CMS Site Application Name>/Xml/SPSSearch.xml" />
        <add key="QuestechSystems.SPSSearchIndexesText" 
          value="All,Sub Site 1,Sub Site 2" />
        <add key="QuestechSystems.SPSSearchIndexesValue" 
          value="All,Sub_Site_1_Content_Index,Sub_Site_2_Content_Index" />
    </appSettings>

    A drop down list for the Content Indexes specified will be added in the SearchInput user control. The "All" in SPSSearchIndexesValue is a special value that defines search to be performed on all Content Indexes defined in SPSSearchIndexesValue. If you only have one Content Index to search, add the following instead:

    <appSettings>
        <add key="QuestechSystems.SPSSearchUrl" 
          value="http://<SPSServer>/_vti_bin/search.asmx" />
        <add key="QuestechSystems.SPSSearchXml" 
          value="/<CMS Site Application Name>/Xml/SPSSearch.xml" />
        <add key="QuestechSystems.SPSSearchIndexesValue" 
          value="Site_Content_Index" />
    </appSettings>

    No drop down list will be added for this case.

  7. Add user control SearchInput to your CMS site to where you want the search input box to show. The results page URL is specified via the SearchResultsUrl property. The search results page can be a CMS template page or a regular ASP.NET page. For example:
    <%@ Register TagPrefix="uc1" 
        TagName="SearchInput" Src="~/UserControls/SearchInput.ascx" %>
    . . . . . .
    <uc1:SearchInput id="SearchInput" 
        SearchResultsUrl="" DefaultSearchIndex="" runat="server">
    </uc1:SearchInput>

    If SearchResultsUrl is not specified, the current page will be used for the results page. If you have specified multiple Content Indexes, you can select the default Content Index to search using the DefaultSearchIndex property. Customize SearchInput.ascx to change the layout of the search input elements.

  8. Add user control SearchResult to your search results page. The control has two properties you can set:
    • DefaultPageSize: The number of search results per page. Default is 10.
    • FilterRights: [true|false]. By default, the search results will filter out any CMS page that you don't have access to see. If your search results do not contain any authorized content and/or if you would like to improve performance, set it to false. Use it with caution though.
  9. Include Search.css to all pages that reference the search controls.
  10. Include all new files to your CMS project. Rebuild your site in VS.NET.

Notes

  1. If SearchResults encounters any errors, it will mask the errors and return "No pages were found". To see the actual errors, add querystring "debug=true" to the search results page and reload the page.
  2. The search controls run in CMS Unpublished mode. The links returned in the search results are all published links, however.

History

  • V1.0 - 2004.07.26 - Base.
  • V1.1 - 2004.08.20 - Enabled search for meta Keywords and Description.
  • V1.2 - 2005.02.05 - Added option to search multiple Content Indexes.
  • V1.3 - 2005.02.13 - Added configurable SPS Search Web Service URL in web.config to facilitate deployment. (Please note: all Web.Config App Settings key names are now qualified with namespace.)
  • V1.4 - 2005.06.25 - Allows exact phrase search.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Stephen Huen
Software Developer (Senior)
Canada Canada
A Microsoft Certified Professional Developer and Technology Specialist.

Experience and expertise in SharePoint 2013 / 2010 / 2007.

Role ranges from a developer in a multi-person team to a solution consultant with expert-level skills, leading a project to completion status.

Proven experience working effectively in a team environment and a self-managed environment.
Follow on   LinkedIn

Comments and Discussions

 
GeneralSharepoint portal Pin
Brave_Gass4-Oct-07 22:41
memberBrave_Gass4-Oct-07 22:41 
GeneralUserHasRightToBrowse syntax Pin
Viracboy28-Jun-06 13:00
memberViracboy28-Jun-06 13:00 
GeneralDefault web.config settings Pin
James Coleman26-Apr-06 12:42
memberJames Coleman26-Apr-06 12:42 
GeneralRe: Default web.config settings Pin
Stephen Huen30-Apr-06 18:41
memberStephen Huen30-Apr-06 18:41 
GeneralThe Local Security Authority cannot be contacted Pin
Jeff Tsang18-Oct-05 12:27
memberJeff Tsang18-Oct-05 12:27 
GeneralRe: The Local Security Authority cannot be contacted Pin
Stephen Huen18-Oct-05 14:58
memberStephen Huen18-Oct-05 14:58 
GeneralInternal Server Error Pin
rush2@comcast.net14-Oct-05 11:05
memberrush2@comcast.net14-Oct-05 11:05 
GeneralRe: Internal Server Error Pin
rush2@comcast.net14-Oct-05 11:29
memberrush2@comcast.net14-Oct-05 11:29 
GeneralRe: Internal Server Error Pin
Stephen Huen18-Oct-05 15:23
memberStephen Huen18-Oct-05 15:23 
QuestionRe: Internal Server Error Pin
James Coleman17-Apr-06 12:07
memberJames Coleman17-Apr-06 12:07 
AnswerRe: Internal Server Error Pin
James Coleman17-Apr-06 12:32
memberJames Coleman17-Apr-06 12:32 
GeneralRe: Internal Server Error Pin
Stephen Huen17-Apr-06 15:18
memberStephen Huen17-Apr-06 15:18 
GeneralRe: Internal Server Error Pin
James Coleman17-Apr-06 16:32
memberJames Coleman17-Apr-06 16:32 
GeneralRe: Internal Server Error Pin
Stephen Huen18-Apr-06 15:16
memberStephen Huen18-Apr-06 15:16 
Generalpublic folders on exchange Pin
Viracboy11-Jul-05 11:39
memberViracboy11-Jul-05 11:39 
GeneralRe: public folders on exchange Pin
Stephen Huen11-Jul-05 16:56
memberStephen Huen11-Jul-05 16:56 
GeneralRe: public folders on exchange Pin
Viracboy12-Jul-05 7:03
memberViracboy12-Jul-05 7:03 
GeneralRe: public folders on exchange Pin
Stephen Huen18-Jul-05 18:46
memberStephen Huen18-Jul-05 18:46 
GeneralUsing basic authentication Pin
Viracboy6-Jul-05 13:17
memberViracboy6-Jul-05 13:17 
GeneralRe: Using basic authentication Pin
Stephen Huen6-Jul-05 20:49
memberStephen Huen6-Jul-05 20:49 
GeneralRe: Using basic authentication Pin
Viracboy11-Jul-05 10:22
memberViracboy11-Jul-05 10:22 
GeneralRe: Using basic authentication Pin
Viracboy11-Jul-05 10:25
memberViracboy11-Jul-05 10:25 
GeneralRe: Using basic authentication Pin
Viracboy11-Jul-05 10:57
memberViracboy11-Jul-05 10:57 
GeneralRe: Using basic authentication Pin
Stephen Huen11-Jul-05 16:59
memberStephen Huen11-Jul-05 16:59 
GeneralRe: Using basic authentication Pin
jamesy blair26-Feb-07 5:56
memberjamesy blair26-Feb-07 5:56 
GeneralAdvanced Search Features Pin
JKPosey21-Jun-05 8:25
memberJKPosey21-Jun-05 8:25 
GeneralRe: Advanced Search Features Pin
Stephen Huen25-Jun-05 10:55
memberStephen Huen25-Jun-05 10:55 
GeneralRe: Advanced Search Features Pin
Anonymous29-Jun-05 6:18
sussAnonymous29-Jun-05 6:18 
GeneralRe: Advanced Search Features Pin
Stephen Huen29-Jun-05 7:44
memberStephen Huen29-Jun-05 7:44 
GeneralHTTP 401: Unauthorized Error Pin
FKcapa16-Jun-05 5:03
memberFKcapa16-Jun-05 5:03 
GeneralRe: HTTP 401: Unauthorized Error Pin
Stephen Huen16-Jun-05 21:11
memberStephen Huen16-Jun-05 21:11 
GeneralRe: HTTP 401: Unauthorized Error Pin
Viracboy29-Jun-05 14:14
memberViracboy29-Jun-05 14:14 
QuestionHow to set up new Content Sources? Pin
JKPosey23-May-05 10:40
memberJKPosey23-May-05 10:40 
AnswerRe: How to set up new Content Sources? Pin
Stephen Huen23-May-05 16:35
memberStephen Huen23-May-05 16:35 
GeneralRe: How to set up new Content Sources? Pin
JKPosey25-May-05 3:16
memberJKPosey25-May-05 3:16 
GeneralDublin Core Pin
afhole11-May-05 5:12
memberafhole11-May-05 5:12 
GeneralRe: Dublin Core Pin
afhole17-May-05 5:06
memberafhole17-May-05 5:06 
GeneralRe: Dublin Core Pin
Stephen Huen17-May-05 23:22
memberStephen Huen17-May-05 23:22 
GeneralRe: Dublin Core Pin
afhole18-May-05 1:22
memberafhole18-May-05 1:22 
GeneralError: Invalid URI: The URI is empty. Pin
JSotomayor7426-Apr-05 23:51
memberJSotomayor7426-Apr-05 23:51 
GeneralRe: Error: Invalid URI: The URI is empty. Pin
Stephen Huen27-Apr-05 7:13
memberStephen Huen27-Apr-05 7:13 
GeneralRe: Error: Invalid URI: The URI is empty. Pin
JSotomayor7427-Apr-05 7:27
memberJSotomayor7427-Apr-05 7:27 
GeneralRe: Error: Invalid URI: The URI is empty. Pin
Stephen Huen27-Apr-05 8:13
memberStephen Huen27-Apr-05 8:13 
GeneralRe: Error: Invalid URI: The URI is empty. Pin
JSotomayor7427-Apr-05 8:18
memberJSotomayor7427-Apr-05 8:18 
GeneralRe: Error: Invalid URI: The URI is empty. Pin
JSotomayor7428-Apr-05 0:46
memberJSotomayor7428-Apr-05 0:46 
GeneralRe: Error: Invalid URI: The URI is empty. Pin
Sanjivb8-May-05 23:39
memberSanjivb8-May-05 23:39 
GeneralRe: Error: Invalid URI: The URI is empty. Pin
jtoulier27-Jun-05 11:44
memberjtoulier27-Jun-05 11:44 
GeneralonKeyPress Capture Pin
afhole22-Feb-05 1:32
memberafhole22-Feb-05 1:32 
GeneralRe: onKeyPress Capture Pin
Stephen Huen22-Feb-05 20:21
memberStephen Huen22-Feb-05 20:21 
GeneralRe: onKeyPress Capture Pin
afhole22-Feb-05 23:32
memberafhole22-Feb-05 23:32 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.150428.2 | Last Updated 27 Jun 2005
Article Copyright 2004 by Stephen Huen
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid