Wildcard Search Web Part for SharePoint 2010

Posted Thursday, May 13, 2010 4:22 PM by CoreyRoth

SharePoint 2010 Enterprise Search has great wildcard search support built in now.  However, it requires the use to add an asterisk to their query every time they want a wildcard search.  This is a great step compared to what we had in MOSS 2007, but now it results in a training issue.  In 2007, many people wrote custom code or relied on the Wildcard Search Web Part that I built.  So I thought why not use the QueryManager object to override the query and add an asterisk to the query for the user. 

Since they’ve given us some methods to override now on the CoreResultsWebPart, these kind of changes can be done easily without using reflection.  We start by adding assembly references to Microsoft.Office.Server.Search.  Then we create a new web part inheriting from CoreResultsWebPart and add the following using statements.

using Microsoft.Office.Server.Search.Query;

using Microsoft.Office.Server.Search.WebControls;

We then override the GetXPathNavigator method and get a reference to the QueryManager and override the UserQuery property.  In reality, there are only two lines of code involved.

QueryManager queryManager = SharedQueryManager.GetInstance(this.Page).QueryManager;

queryManager.UserQuery = string.Format("{0}*", queryManager.UserQuery);

You can look at the code in the CodePlex project for specifics.  Instructions to add the solution package are included in the readme.txt file.  You can use PowerShell to add the solution package or use stsadm still if you like.  Once the solution is installed, activate the Wildcard Search Core Results (DotNetMafia.com) site collection feature.

WildcardSearchFeatureActivated

Now, go edit any search center results.aspx page you have and use the add web part button on the bottom zone.

WildcardSearchResultsBottomZoneAddWebPart

Click on the Search group, and choose the Wildcard Search Core Results (DotNetMafia.com) web part.

WildcardSearchAddWebPart

Remove the existing CoreResultsWebPart from the zone and drag it into place.  You can then stop editing (or publish) the page.  Try a wildcard query and you should get results like the one below.

WildcardSearchResults

Notice how i search for accoun and yet I get matches for Accounting and Account.  Very cool.  I’ll warn you that this is a very preliminary release.  It definitely needs more testing so if you run into issues, please let me know.  This was compiled against the release version of SharePoint 2010.  Give it a try and let me know what you think.

Wildcard Search Web Part for SharePoint 2010

Follow me on twitter.

Comments

# Twitter Trackbacks for Wildcard Search Web Part for SharePoint 2010 - Corey Roth - DotNetMafia.com - Tip of the Day [dotnetmafia.com] on Topsy.com

Pingback from  Twitter Trackbacks for                 Wildcard Search Web Part for SharePoint 2010 - Corey Roth - DotNetMafia.com - Tip of the Day         [dotnetmafia.com]        on Topsy.com

# re: Wildcard Search Web Part for SharePoint 2010

Monday, May 24, 2010 11:45 AM by sathish

Hi Corey Roth,

This a great post and it help me a lot.

I have a requirement to override the Search Action Link Webpart in People Search. I want to add two more managed property to the DropDown so that I can sort on that.

I want to add LastName and FirstName to the dropdown with the existing Relevance,social distance and name

Can you help on that

# re: Wildcard Search Web Part for SharePoint 2010

Wednesday, July 28, 2010 10:36 AM by Rob S

Thanks, Corey.  This is a help!

After setting this up, however, I'm not receiving any message when no results are found.  Any way I can rectify this?

Thanks in advance

# re: Wildcard Search Web Part for SharePoint 2010

Friday, October 22, 2010 6:15 AM by Mario

Hello Corey,

Comment:

When you do not use the asterix wildcard the refinement panel is not filtered. So this makes this solution limited in use.

Question:

We want to modify the WildcardSearchCoreResultsWebPart to change the look of the results web part. But whatever we do in Designer is not displayed in the browser.

Do you know why?

Kind regards,

Mario

m.vandeneijnde@on-l-i-n-e.com

# re: Wildcard Search Web Part for SharePoint 2010

Wednesday, November 3, 2010 8:13 AM by Mikael Svenson

Do you have any idea why this webpart won't work against the FAST SSA? Against the built-in search it works just fine, but if you point it to use FAST results it shows nothing at all.

# re: Wildcard Search Web Part for SharePoint 2010

Friday, November 5, 2010 11:03 AM by CoreyRoth

@Mikael I'm surprised it doesn't work.  The syntax should be the same.  I'll try this out when I get a chance.

# re: Wildcard Search Web Part for SharePoint 2010

Monday, November 8, 2010 4:10 PM by Yaelc

Hello,

This is a great solution.

It does work for fast for SharePoint 2010.

But when I use it does not returns the "Did you mean ?" or as mentioned before it does not return any message when no results are found.

Do you know why, or how to solve it?

Thanks'

Yael.

# re: Wildcard Search Web Part for SharePoint 2010

Thursday, May 5, 2011 5:41 AM by Cecilie Widsteen

Hi,

if all  you need to do is to add the asterisk to the query, then it's possible to add it in the confuguration of the federated location you are using. Since even local searches are routed through the federation layer, as documented here: msdn.microsoft.com/.../ee558338.aspx - “The search result Web Parts in SharePoint Enterprise Search are built on top of the federated search object model.” - then you can add the asterisk to the query template of the "Local Search Results" location, like so: {searchTerms}* . It seems to me you'll achieve pretty much the same, no programming needed.

# re: Wildcard Search Web Part for SharePoint 2010

Friday, May 6, 2011 10:56 AM by Pepe

Hi Corey,

I have the same requirement that Sathish who wrote "How to override the Search Action Link Webpart,  I want to add two more managed property to the DropDown so that I can sort on that."

Could You help me?

Kind regards,

PEPE

joseluisolivarez@hotmail.com

# re: Wildcard Search Web Part for SharePoint 2010

Thursday, May 19, 2011 7:44 AM by Manisha

I changed the QueryManager.UserQuery in GetXPathNavigator() method. But it seems that though user query is getting updated. Results fetched are not getting changed as per the new query. ApprovedCountries is the custom managed property.

Here is the code:

[ToolboxItemAttribute(false)]

   public class CMSCoreResultsWebPart : CoreResultsWebPart

   {

       private QueryManager queryManager;

       private KeywordQuery keyQuery;

       protected override void OnInit(EventArgs e)

       {

           queryManager = SharedQueryManager.GetInstance(this.Page).QueryManager;

           base.OnInit(e);

       }

       protected override System.Xml.XPath.XPathNavigator GetXPathNavigator(string viewPath)

       {

           try

           {

               Page.ClientScript.RegisterStartupScript(this.GetType(), "AlertPartNumbe1r", "<script type='text/javascript'>alert(' " + queryManager.UserQuery + "');</script>");

               queryManager.UserQuery = queryManager.UserQuery + " ApprovedCountries:India";

               Page.ClientScript.RegisterStartupScript(this.GetType(), "AlertPartNum33be1r", "<script type='text/javascript'>alert(' " + queryManager.UserQuery + "');</script>");

           }

           catch (Exception ex)

           {

               Page.ClientScript.RegisterStartupScript(this.GetType(), "AlertPartNumber",

             "<script type='text/javascript'>alert('" + ex.GetBaseException().ToString() + "');</script>");

           }

           return base.GetXPathNavigator(viewPath);

}

# re: Wildcard Search Web Part for SharePoint 2010

Thursday, May 19, 2011 9:02 AM by CoreyRoth

@Manisha your code looks like it should work.  You can download the source code to the web part I did from codeplex if you need something to compare against but it is pretty simple.

# re: Wildcard Search Web Part for SharePoint 2010

Thursday, May 19, 2011 9:28 AM by Steve Reid

I added the astriks like Cecilie Widsteen said and it seems to work without needing this webpart...

Thanks Cecilie Widsteen!

# re: Wildcard Search Web Part for SharePoint 2010

Thursday, May 19, 2011 9:43 AM by CoreyRoth

That technique does work but you may run into issues if you start creating custom queries using managed properties as it will render the syntax invalid.

# re: Wildcard Search Web Part for SharePoint 2010

Monday, May 23, 2011 5:50 AM by AJ

Hi Corey - I'm struggling to activate the feature - what's the syntax? I've been trying:

Enable-SPFeature –Identity WildCardSearchCoreResultsWebPart –url http://sharepoint/

And I'm getting the error:

The feature is not a farm level feature and is not found in a site level defined by the url http://sharepoint/

What have I done wrong?

# re: Wildcard Search Web Part for SharePoint 2010

Monday, May 23, 2011 9:51 AM by CoreyRoth

@AJ Your syntax looks correct.  Are you sure the solution package installed correctly.  Verify that it's there and deployed in Central Administration.  You can also activate the feature through the UI in Site Collection features.

# re: Wildcard Search Web Part for SharePoint 2010

Monday, May 30, 2011 6:48 AM by Cecilie Widsteen

I absolutely agree with Corey - this could have side effects that you haven't thought of and you need to be aware of what you're doing :) like, I presume what you mean by custom queries using managed properties is when you do a fielded search? Like this: keyword1 fieldname:keyword2 - you'll acheive nothing here, because the asterisk will be added towards the end of the expression... and a fielded search is by default a wildcard search. Thing is, if you don't have users that are likely to be aware of the possibility to do fielded searches, then you'll risk little. And you could always create another location without the asterisk added under the hood and let experienced users perform their search towards this other location. But if you for instance use append to query on your web part, you'll actually get the asterisk appended after the appended text AND a space. So you should also be aware of this and check if this is something that renders this solution useless to you.  

# re: Wildcard Search Web Part for SharePoint 2010

Friday, June 24, 2011 10:23 AM by Walt Fles

Corey,

I activated the feature and am having trouble with making it the default search engine.

What exactly do you mean by: "The Wildcard Search Core Results Web Part can then be added to your Search Center's results.aspx page.

Simply add this web part to the bottom zone and remove your existing Core Results Web Part."

I guess that starts with:

"Now, go edit any search center results.aspx page you have and use the add web part button on the bottom zone." but I'm confused how to get there.

Thanks in advance!

# Wildcard Search Sharepoint 2010 | Code ??ffle Blog

Saturday, October 29, 2011 3:04 PM by Wildcard Search Sharepoint 2010 | Code ??ffle Blog

Pingback from  Wildcard Search Sharepoint 2010 | Code ??ffle Blog

# re: Wildcard Search Web Part for SharePoint 2010

Friday, January 6, 2012 1:03 PM by CoreyRoth

@Walt.  Just edit the results.aspx page of your search center, remove the existing CoreResultsWebPart, and ad this new one in its place.

# re: Wildcard Search Web Part for SharePoint 2010

Tuesday, January 31, 2012 11:28 PM by samo

Hello,

i'm facing this problem that the web part is not displaying, though i activated the feature in the "Site collection features"...

what should i do

# re: Wildcard Search Web Part for SharePoint 2010

Monday, February 6, 2012 11:52 PM by CoreyRoth

@Samo It doesn't appear in the web part list?  Does it appear in the web part gallery of the site collection?

# re: Wildcard Search Web Part for SharePoint 2010

Saturday, June 2, 2012 6:57 AM by Ajay Sharma

Thank you for your great work. I have created a custom webpart inheriting from Coreresultwebpart that do the sorting on LastName. I am using Ranking model logic to sort the results on LastName as this was not available as default. But when i added your code to override the XPathNavigator method then sorting stopped working. Please help as this is urgent for my client. Client want both cutom sorting with wildcard search.

# re: Wildcard Search Web Part for SharePoint 2010

Wednesday, June 6, 2012 1:32 PM by CoreyRoth

@Ajay do you have a code snippet you can share?

# re: Wildcard Search Web Part for SharePoint 2010

Friday, June 29, 2012 4:33 PM by Randy Schader

I just installed this webpart and noticed:

1)  The refinement panel only displays ‘No refinements available’.  Is this expected behavior?  If not then I will continue investigating.

2)  I see that someone else tested with a known condition of no items returned, and did not get any message stating such.

I will back out the new web part and try the approach mentioned by Cecilie Widsteen (May 5, 2011).

# re: Wildcard Search Web Part for SharePoint 2010

Thursday, July 26, 2012 4:11 PM by James

We are having a problem with refinements.  When the search term is a wildcard, "stew" rather than "stewart" it returns a set of results but the refinements are not found.  If we search on "stewart" the results are the same and we get refinements.  Another odd thing is in the first scenario, using a wildcard search term, we get the results, click on a sort column and we get refinements with a refresh sorted result set.  Any suggestions on this?  

# re: Wildcard Search Web Part for SharePoint 2010

Thursday, November 15, 2012 4:26 PM by Doreen

Thank you - Thank you for this !!

Just having an alignment issue where it right justifies (leaving a very, very large left margin on the screen which looks silly) the results when we de-select the 4 items below.....

Display "Search from Windows" Link

Display "Alert Me" Link

Display "RSS" Link

Allow users to display language picker

Tried moving to middle lower left zone and that's too "skinny" but it is left

Any easy idea for this?

# re: Wildcard Search Web Part for SharePoint 2010

Wednesday, July 17, 2013 5:02 AM by Avian

I download the tool, seems to be working fine, thanks for sharing.

I have five type of following documents in my document libraries

1123AVK.DOCX

1123AVKS.DOCX

123AVK237.DOCX

123AVKS.DOCX

2123AVK.DOCX

Now when I search keyword as 123AVK, it returns following two result

123AVK237.DOCX

123AVKS.DOCX

I want it should result all 5 records as mentiond above because all five documents are containing 123AVK.

so please share your thoughts and let me know how can I do this?

Avian

# re: Wildcard Search Web Part for SharePoint 2010

Wednesday, October 21, 2015 9:22 AM by Palvayi

How to do wildcard search in Infopath form 2013

Leave a Comment

(required)
(required)
(optional)
(required)