<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.dotnetmafia.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Corey Roth [MVP] : Wildcard Search</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Wildcard+Search/default.aspx</link><description>Tags: Wildcard Search</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Using SharePoint Search to display the documents of the current user</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2011/12/02/using-sharepoint-search-to-display-the-documents-of-the-current-user.aspx</link><pubDate>Fri, 02 Dec 2011 17:43:59 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:5339</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=5339</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2011/12/02/using-sharepoint-search-to-display-the-documents-of-the-current-user.aspx#comments</comments><description>&lt;p&gt;I see requests for this in the SharePoint forums a lot and I always figured it was pretty easy to do with a few lines of code.&amp;#160; Sometimes users want to display a list of documents that the worked on throughout the farm.&amp;#160; The &lt;em&gt;CoreResultsWebPart&lt;/em&gt; has the ability to execute fixed static queries.&amp;#160; However, there is no way for you to specify the current user in the query.&amp;#160; I had a need for this myself soon so I thought I would try it out and see if I could implement it.&amp;#160; It turns our this can be done with two lines of code.&lt;/p&gt;  &lt;p&gt;To implement this we need to create a class that inherits from &lt;em&gt;CoreResultsWebPart&lt;/em&gt;.&amp;#160; I am doing this in the exact same way I built the &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2010/05/13/wildcard-search-web-part-for-sharepoint-2010.aspx"&gt;Wildcard Search Web Part for SharePoint 2010&lt;/a&gt;.&amp;#160; You can download that web part from CodePlex if you want to use it as a starting point.&amp;#160; What we want to do is set the &lt;em&gt;FixedQuery &lt;/em&gt;property.&amp;#160; Normally when we do query manipulation, we do it after it has been submitted by the user with &lt;em&gt;GetXPathNavigator()&lt;/em&gt;.&amp;#160; We don’t need to override that method in this case.&amp;#160; Instead, I just put the code I need in the constructor.&lt;/p&gt;  &lt;p&gt;The first thing we need to do is change the &lt;em&gt;QueryNumber&lt;/em&gt;.&amp;#160; By default it is set to &lt;em&gt;Query1&lt;/em&gt; (or &lt;em&gt;UserQuery&lt;/em&gt; back in 2007) which meant that it was expecting input from the user.&amp;#160; In this case, I just change it to &lt;em&gt;Query2&lt;/em&gt;.&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.QueryNumber = &lt;span style="color:#2b91af;"&gt;QueryId&lt;/span&gt;.Query2;&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;Next, we write a query using the Author keyword.&amp;#160; I’ve explained its use before in my &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2010/07/20/some-handy-keywords-you-might-find-useful-in-sharepoint-enterprise-search.aspx"&gt;handy keywords&lt;/a&gt; post.&amp;#160; It’s syntax is usually something like this.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Author:”Display Name”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;So for example, to search for my documents I would use:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Author:”Corey Roth”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;We want to put the user’s name in the Author query dynamically, so we look it up using &lt;em&gt;SPContext.Current.Web.UserQuery&lt;/em&gt;.&amp;#160; We then just use the keyword syntax above and assign it to the &lt;em&gt;FixedQuery&lt;/em&gt; property.&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.FixedQuery = &lt;span style="color:blue;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#a31515;"&gt;&amp;quot;Author:\&amp;quot;{0}\&amp;quot;&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;SPContext&lt;/span&gt;.Current.Web.CurrentUser.Name);&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;Compile your code and deploy it and then you are good to go.&amp;#160; Just use this web part in lieu of the regular &lt;em&gt;CoreResultsWebPart&lt;/em&gt;.&amp;#160; Here’s what it looks like on my page.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SearchMyDocuments_5EF563CA.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="SearchMyDocuments" border="0" alt="SearchMyDocuments" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/SearchMyDocuments_thumb_33ED4FF8.png" width="600" height="412" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Try it out and let me know if you have any questions.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/coreyroth"&gt;@coreyroth&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=5339" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Wildcard+Search/default.aspx">Wildcard Search</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category></item><item><title>Wildcard Search Web Part for SharePoint 2010</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2010/05/13/wildcard-search-web-part-for-sharepoint-2010.aspx</link><pubDate>Thu, 13 May 2010 21:22:13 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:3253</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>26</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=3253</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2010/05/13/wildcard-search-web-part-for-sharepoint-2010.aspx#comments</comments><description>&lt;p&gt;SharePoint 2010 Enterprise Search has great wildcard search support built in now.&amp;#160; However, it requires the use to add an asterisk to their query every time they want a wildcard search.&amp;#160; This is a great step compared to what we had in MOSS 2007, but now it results in a training issue.&amp;#160; In 2007, many people wrote custom code or relied on the &lt;a href="http://wildcardsearch.codeplex.com/"&gt;Wildcard Search Web Part&lt;/a&gt; that I built.&amp;#160; So I thought why not use the QueryManager object to override the query and add an asterisk to the query for the user.&amp;#160; &lt;/p&gt;  &lt;p&gt;Since they’ve given us some methods to override now on the CoreResultsWebPart, these kind of changes can be done easily without using reflection.&amp;#160; We start by adding assembly references to Microsoft.Office.Server.Search.&amp;#160; Then we create a new web part inheriting from CoreResultsWebPart and add the following using statements.&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; Microsoft.Office.Server.Search.Query;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; Microsoft.Office.Server.Search.WebControls; &lt;/p&gt; &lt;/div&gt;   &lt;p&gt;We then override the GetXPathNavigator method and get a reference to the QueryManager and override the UserQuery property.&amp;#160; In reality, there are only two lines of code involved.&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;QueryManager&lt;/span&gt; queryManager = &lt;span style="color:#2b91af;"&gt;SharedQueryManager&lt;/span&gt;.GetInstance(&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Page).QueryManager;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;queryManager.UserQuery = &lt;span style="color:blue;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#a31515;"&gt;&amp;quot;{0}*&amp;quot;&lt;/span&gt;, queryManager.UserQuery);&lt;/p&gt; &lt;/div&gt;   &lt;p&gt;You can look at the code in the CodePlex project for specifics.&amp;#160; Instructions to add the solution package are included in the readme.txt file.&amp;#160; You can use &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/12/02/adding-and-deploying-solutions-with-powershell-in-sharepoint-2010.aspx"&gt;PowerShell&lt;/a&gt; to add the solution package or use stsadm still if you like.&amp;#160; Once the solution is installed, activate the &lt;em&gt;Wildcard Search Core Results (DotNetMafia.com) &lt;/em&gt;site collection feature.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/WildcardSearchFeatureActivated_2AC97CA6.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="WildcardSearchFeatureActivated" border="0" alt="WildcardSearchFeatureActivated" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/WildcardSearchFeatureActivated_thumb_4933BD8F.png" width="577" height="49" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now, go edit any search center results.aspx page you have and use the add web part button on the bottom zone.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/WildcardSearchResultsBottomZoneAddWebPart_18DCC30C.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="WildcardSearchResultsBottomZoneAddWebPart" border="0" alt="WildcardSearchResultsBottomZoneAddWebPart" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/WildcardSearchResultsBottomZoneAddWebPart_thumb_78558359.png" width="365" height="105" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Click on the Search group, and choose the &lt;em&gt;Wildcard Search Core Results (DotNetMafia.com)&lt;/em&gt; web part.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/WildcardSearchAddWebPart_7E9C59E7.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="WildcardSearchAddWebPart" border="0" alt="WildcardSearchAddWebPart" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/WildcardSearchAddWebPart_thumb_02C631AD.png" width="637" height="257" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Remove the existing CoreResultsWebPart from the zone and drag it into place.&amp;#160; You can then stop editing (or publish) the page.&amp;#160; Try a wildcard query and you should get results like the one below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/WildcardSearchResults_20580CAC.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="WildcardSearchResults" border="0" alt="WildcardSearchResults" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/WildcardSearchResults_thumb_3401A3E8.png" width="624" height="360" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Notice how i search for &lt;em&gt;accoun&lt;/em&gt; and yet I get matches for Accounting and Account.&amp;#160; Very cool.&amp;#160; I’ll warn you that this is a very preliminary release.&amp;#160; It definitely needs more testing so if you run into issues, please let me know.&amp;#160; This was compiled against the release version of SharePoint 2010.&amp;#160; Give it a try and let me know what you think. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://wildcardsearch2010.codeplex.com"&gt;Wildcard Search Web Part for SharePoint 2010&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Follow me on &lt;a href="http://twitter.com/coreyroth"&gt;twitter&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=3253" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Wildcard+Search/default.aspx">Wildcard Search</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category></item><item><title>Disabling Full Text Search with Wildcard Search Web Part Release 5</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/07/08/disabling-full-text-search-with-wildcard-search-web-part-release-5.aspx</link><pubDate>Wed, 08 Jul 2009 18:50:47 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:933</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>17</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=933</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/07/08/disabling-full-text-search-with-wildcard-search-web-part-release-5.aspx#comments</comments><description>&lt;p&gt;I’ve seen quite a few posts in the forums about people wanting to not search the contents of documents.&amp;#160; These people for whatever reason were interested in just the title and path being searched.&amp;#160; Out of the box, this of course is not possible, but I got to thinking about how this functionality could be quite easily added to Wildcard Search.&amp;#160; With Release 5, I added a new property called &lt;em&gt;DisableFullTextSearch&lt;/em&gt;.&amp;#160; Selecting this box, will cause the web part to only search the Title and Url fields.&amp;#160; It seems to work great.&amp;#160; I also fixed a few minor issues with default values in the web part in a few places.&amp;#160; If you don’t need this functionality, you can stay on your existing version.&lt;/p&gt;  &lt;p&gt;I also took a look at the download numbers for all of the releases.&amp;#160; Here is where it stands as of today.&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;&lt;strong&gt;Version&lt;/strong&gt;&lt;/td&gt;        &lt;td&gt;&lt;strong&gt;Downloads&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;Release 4&lt;/td&gt;        &lt;td&gt;439&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;Release 3&lt;/td&gt;        &lt;td&gt;1586&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;Release 2&lt;/td&gt;        &lt;td&gt;397&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;Release 1&lt;/td&gt;        &lt;td&gt;664&lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;Not huge numbers, but I would say that is pretty decent for a SharePoint web part.&amp;#160; Of course I have no way of knowing how many people are truly using it, but I would like to this that this web part is really helping people out.&amp;#160; Although it doesn’t have all of the functionality that a commercial product does, it gets the job done and doesn’t cost the community anything to use.&amp;#160; This functionality should have been included to begin with which is why I am happy to give it to the community for their use.&amp;#160; Hope this release is useful to you and thanks for the continuing feedback.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://wildcardsearch.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29929"&gt;Wildcard Search Release 5&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=933" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Wildcard+Search/default.aspx">Wildcard Search</category></item><item><title>Announcing custom sort order support for WildcardSearchWebPart</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/20/announcing-custom-sort-order-support-for-wildcardsearchwebpart.aspx</link><pubDate>Wed, 20 May 2009 13:56:32 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:909</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=909</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2009/05/20/announcing-custom-sort-order-support-for-wildcardsearchwebpart.aspx#comments</comments><description>&lt;p&gt;I was reading the forums the other day and saw another post in the MOSS Search &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sharepointsearch/threads"&gt;forum&lt;/a&gt; about someone wanting to be able to specify a custom sort order with the CoreResultsWebPart.&amp;#160; WildcardSearchWebPart will allow you to specify a static full text sql query or it builds one of its own.&amp;#160; The problem is, the CoreResultsWebPart that it inherits from has logic in it to go and add an ORDER BY clause based on data modified or relevance.&amp;#160; This causes an issue because if you specify your own order by clause, it causes a syntax error. This &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sharepointsearch/thread/b99f827d-ccd9-4455-873c-0ce76df27394"&gt;post&lt;/a&gt; had a rather simple solution to solving the issue.&amp;#160; The answer is to simply add your own ORDER BY clause followed by a -- (SQL comment).&amp;#160; This causes the syntax to be valid and everything works.&lt;/p&gt;  &lt;p&gt;After seeing this, I immediately knew I wanted to add this to the WildcardSearchWebPart.&amp;#160; I added a new property called SortOrder which would allow you pass any valid ORDER BY clause.&amp;#160; For example:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Title&lt;/li&gt;    &lt;li&gt;Author DESC&lt;/li&gt;    &lt;li&gt;ContentSource, Author DESC, Title&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You should be able to sort on any manager property that you have returned in the Select Columns XML field.&amp;#160; Give it a try and see how it works.&amp;#160; My next step to research is to see if I can implement this with a keyword query.&amp;#160; Try it out and post any issues you run into on CodePlex.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://wildcardsearch.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24225"&gt;Wildcard Search Version 1.0 Release 4&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Follow me on &lt;a href="http://twitter.com/coreyroth"&gt;twitter&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=909" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Wildcard+Search/default.aspx">Wildcard Search</category></item><item><title>Introducing Document Link Handler for MOSS 2007 Enterprise Search</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/10/31/introducing-document-link-handler-for-moss-2007-enterprise-search.aspx</link><pubDate>Fri, 31 Oct 2008 18:30:17 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:763</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>19</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=763</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/10/31/introducing-document-link-handler-for-moss-2007-enterprise-search.aspx#comments</comments><description>&lt;p&gt;Since, I have started working with Enterprise Search, I have received many requests looking for ways to improve what we can do with documents.&amp;nbsp; The search results screen in MOSS, as flexible as it is, has always been lacking in features compared to search results of other ECM systems.&amp;nbsp; Common feature requests I have seen from clients include:&amp;nbsp; editing the document, viewing properties, linking to the folder or document library, linking to the site the document is in, zip and download, view version history, and more.&amp;nbsp; Today I am pleased to announce a simple solution which can handle many (but not all) of these common requests.&lt;/p&gt; &lt;p&gt;So how do we accomplish this?&amp;nbsp; I decided to build a simple ASP.NET Handler (.ashx) file to parse the URL from a document on the search results page and redirect a user to the page that he or she wanted.&amp;nbsp; Links to the handler can easily be added by modifying the XSL of the CoreResultsWebPart.&lt;/p&gt; &lt;p&gt;The code of the handler is pretty simple.&amp;nbsp; I take the URL passed via query string, split it to get the filename and the path and then I open an SPWeb object that references that site.&amp;nbsp; Once I have access to an SPFolder and SPFile object for the document, I can determine URLs for the document library and folder.&amp;nbsp; Take a look at the code if you are interested.&amp;nbsp; It might need some optimization, but it is a good starting point.&lt;/p&gt; &lt;p&gt;Installation is simple.&amp;nbsp; Install the included .wsp file contained in the package folder.&amp;nbsp;&amp;nbsp; The syntax is listed in the readme.txt file if you need it.&amp;nbsp; This will copy the DocumentLink.ashx file into your layouts folder.&amp;nbsp; To add the links to your search results, go to the results page of your search center and edit your CoreResultsWebPart.&amp;nbsp; In the Data View Properties, click on the XSL Editor button.&amp;nbsp; Replace the XSL in the window with the contents of the included SampleCoreResults.xslt file.&amp;nbsp; If you have already made customizations to this file or you only want certain links, you may copy just the lines you need from the readme.txt file.&lt;/p&gt; &lt;p&gt;After you have changed the XSLT, apply the changes and execute a search query.&amp;nbsp; If you receive an error, then your XSL is probably malformed.&amp;nbsp; Open the XSL with Visual Studio if necessary to help find the error.&amp;nbsp; If all goes well, you should have search results that look like the one below.&amp;nbsp; Note, that these links will only show up for search results that are documents (IsDocument:1).&amp;nbsp; This works together in conjunction with my post earlier this week on adding an &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/10/27/adding-an-edit-document-link-to-enterprise-search-results.aspx"&gt;edit document link&lt;/a&gt; to search results.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/WindowsLiveWriter/IntroducingDocumentLinkHandlerforMOSS200_869B/SearchResultsDocumentLinks_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="76" alt="SearchResultsDocumentLinks" src="http://www.dotnetmafia.com/blogs/dotnettipoftheday/WindowsLiveWriter/IntroducingDocumentLinkHandlerforMOSS200_869B/SearchResultsDocumentLinks_thumb.jpg" width="379" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The binaries and source code are available at &lt;a href="http://www.codeplex.com/MOSSSearchLinks"&gt;CodePlex&lt;/a&gt;.&amp;nbsp; If you have any issues, please log them there on the Issue Tracker.&amp;nbsp; If you have any idea of other kinds of links we can provide off of a document library, please leave a comment.&amp;nbsp; This can also be used with the &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/10/14/wildcard-search-version-1-0-release-3.aspx"&gt;Wildcard Search&lt;/a&gt; web part.&amp;nbsp; Hopefully this will help many others out there deliver even richer search solutions to their customers.&amp;nbsp; Thanks.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.codeplex.com/MOSSSearchLinks"&gt;Document Link Handler for MOSS 2007 Enterprise Search&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=763" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Wildcard+Search/default.aspx">Wildcard Search</category></item><item><title>Wildcard Search Version 1.0 Release 3</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/10/14/wildcard-search-version-1-0-release-3.aspx</link><pubDate>Tue, 14 Oct 2008 21:46:09 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:740</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=740</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/10/14/wildcard-search-version-1-0-release-3.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.codeplex.com/WildcardSearch/Release/ProjectReleases.aspx?ReleaseId=18345"&gt;Release 3&lt;/a&gt; of the Wildcard Search Web Part is now available.&amp;nbsp; This minor update fixes a user reported issue where the scope property was not being used.&amp;nbsp; If you are new to the blog, the Wildcard Search web part allows a user to do partial word queries with Enterprise Search (i.e.: searching for red, returns results matching redmond, redding, and red).&amp;nbsp; Please continue to report bug on the &lt;a href="http://www.codeplex.com/WildcardSearch"&gt;CodePlex&lt;/a&gt; site.&amp;nbsp; Thanks again for everyone&amp;#39;s input.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Also, don&amp;#39;t forget the &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/09/24/announcing-the-first-tulsa-sharepint-meetup.aspx"&gt;SharePint meetup&lt;/a&gt;, this Thursday at Crawpappy&amp;#39;s at 6pm.&amp;nbsp; &lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=740" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Wildcard+Search/default.aspx">Wildcard Search</category></item><item><title>What you give up with Full Text SQL Queries using Wildcard Search</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/09/18/what-you-give-up-with-full-text-sql-queries-using-wildcard-search.aspx</link><pubDate>Thu, 18 Sep 2008 16:21:20 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:695</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=695</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/09/18/what-you-give-up-with-full-text-sql-queries-using-wildcard-search.aspx#comments</comments><description>&lt;p&gt;I am very glad to see that the &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/09/16/wildcard-search-web-part-release-2-is-here.aspx?CommentPosted=true#commentmessage"&gt;Wildcard Search Web Part&lt;/a&gt; has been so well received.&amp;nbsp; It&amp;#39;s nice to know so many people are getting good use out of it.&amp;nbsp; I have had a number of comments about it regarding what else works with it and what doesn&amp;#39;t so I thought I would address them today in a post.&amp;nbsp; We&amp;#39;ll start with how the Search Center works out of the box.&amp;nbsp; It uses the Enterprise Search Keyword Query syntax.&amp;nbsp; As you probably know by now, this syntax does not support wildcard searching.&amp;nbsp; To implement Wildcard Search, I had to use&amp;nbsp; Full Text SQL Query syntax which does support wildcard searching.&amp;nbsp; Unfortunately, a lot of the functionality on the search results page only works with keyword syntax.&amp;nbsp; Here is a list of things that will not work or will work differently.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;SearchSummaryWebPart - Provides the &amp;quot;Did you mean...&amp;quot; functionality.&lt;/li&gt; &lt;li&gt;Best Bets - Keyword based so it will not work.&lt;/li&gt; &lt;li&gt;Keyword Highlighting - Obviously keyword based as well.&lt;/li&gt; &lt;li&gt;RSS - This is keyword based as well.&lt;/li&gt; &lt;li&gt;Federated Search - Works but treats your search term as a keyword ignoring the wildcard.&lt;/li&gt; &lt;li&gt;Faceted Search - Keyword based, but I am confident we could write code on both our parts to make this work.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Ok, so this may sound like a lot, but in my experience a lot of people don&amp;#39;t use some of this functionality.&amp;nbsp; It is just a trade off between having wildcard search or not.&amp;nbsp; This really isn&amp;#39;t a result of the Wildcard Search web part alone.&amp;nbsp; It&amp;#39;s the result of using a Full Text SQL Query and what Enterprise Search&amp;#39;s limitations are.&amp;nbsp; We can confirm this by using the Advanced Search results web part.&amp;nbsp; Depending on the type of query you submit, it will do a Full Text SQL Query and the same functionality is missing.&amp;nbsp; It&amp;#39;s been my experience that customer&amp;#39;s really do like having the wildcard functionality and rarely miss the other features.&amp;nbsp; Thanks again for all the comments.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=695" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Wildcard+Search/default.aspx">Wildcard Search</category></item><item><title>Using Wildcard Search Web Part to search for recently modified files</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/09/17/using-wildcard-search-web-part-to-search-for-recently-modified-files.aspx</link><pubDate>Wed, 17 Sep 2008 13:39:53 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:688</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=688</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/09/17/using-wildcard-search-web-part-to-search-for-recently-modified-files.aspx#comments</comments><description>&lt;p&gt;You may have a case where you want to search for files that were recently modified.&amp;nbsp; Sure, you can use a CAML query to do this, but what if you want to look for recently changed files across multiple content sources?&amp;nbsp; Sure, you can write your own Full Text SQL Query and bind it in a web part, but there is an easier way.&amp;nbsp; The new &lt;em&gt;FixedFullTextSqlQuery&lt;/em&gt; property in &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/09/16/wildcard-search-web-part-release-2-is-here.aspx"&gt;Release 2&lt;/a&gt; of the &lt;a href="http://www.codeplex.com/WildcardSearch"&gt;Wildcard Search Web Part&lt;/a&gt; makes this really simple.&amp;nbsp; You just need the right query.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Date functions in Enterprise Search SQL are similar but the syntax is a little different.&amp;nbsp; First you&amp;#39;ll need to get the current date.&amp;nbsp; The &lt;em&gt;GETGMTDATE&lt;/em&gt; function is what you need to get the current date.&amp;nbsp; Next you just need to use &lt;em&gt;DATEADD&lt;/em&gt; to subtract the number of days, months, etc, that you need for your fixed query.&amp;nbsp; In this case, I&amp;#39;ll subtract 7 days by specifying &lt;em&gt;DAY&lt;/em&gt; and &lt;em&gt;-7&lt;/em&gt;.&amp;nbsp; You can also specify MONTH, YEAR, HOUR, etc as well.&amp;nbsp; The last modified date is stored in a managed property called &lt;em&gt;Write&lt;/em&gt; (took me a while to figure that one out).&amp;nbsp; That will make your condition look something like this.&lt;/p&gt; &lt;p&gt;&lt;em&gt;WHERE Write &amp;gt; DATEADD(DAY, -7, GETGMTDATE())&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Then, all you need to do is form your SELECT statement.&amp;nbsp; You can&amp;#39;t use SELECT *, so you need to specify all of your columns individually.&amp;nbsp; The easiest way to get this column list is to look at the Select Columns property on your control.&amp;nbsp; My example below lists most of them.&amp;nbsp; When you are all done, this is what your query would look like.&lt;/p&gt; &lt;p&gt;&lt;em&gt;SELECT Rank, Title, Path, Author, Write, WorkId, Size, Description, SiteName, CollapsingStatus, ContentClass, IsDocument, HitHighlightedSummary, HitHighlightedProperties, FROM Scope() WHERE Write &amp;gt; DATEADD(DAY, -7, GETGMTDATE())&lt;/em&gt;&lt;/p&gt; &lt;p&gt;This will query the entire index for documents modified in the last 7 days.&amp;nbsp; You may want to filter it down to a specific scope by using an additional condition in your WHERE clause.&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=688" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Wildcard+Search/default.aspx">Wildcard Search</category></item><item><title>NEW! Web Part for Wildcard Search in Enterprise Search</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/06/09/new-web-part-for-wildcard-search-in-enterprise-search.aspx</link><pubDate>Mon, 09 Jun 2008 13:28:15 GMT</pubDate><guid isPermaLink="false">ceb7fe2a-c56b-4d85-99e6-8dd548580538:603</guid><dc:creator>CoreyRoth</dc:creator><slash:comments>79</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnetmafia.com/blogs/dotnettipoftheday/rsscomments.aspx?PostID=603</wfw:commentRss><comments>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/06/09/new-web-part-for-wildcard-search-in-enterprise-search.aspx#comments</comments><description>&lt;p&gt;I have had &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2008/02/01/things-users-complain-about-with-enteprise-search.aspx"&gt;countless people&lt;/a&gt; tell me that they want to be able to do wildcard search in MOSS Enterprise Search using the existing Search Center site templates.&amp;nbsp; The Search Center site template uses keyword query syntax which does not support wildcards.&amp;nbsp; To get wildcards you need to use a full text SQL query.&amp;nbsp; Until now the only solutions to getting wildcard search was either use &lt;a href="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2007/08/29/product-review-ontolica-wildcard.aspx"&gt;Ontolica&amp;#39;s Wildcard Search&lt;/a&gt; or write your own search page.&amp;nbsp; Neither option has ever been appealing to me.&amp;nbsp; Ontolica replaces the entire search center and provides an extra layer of abstraction to your managed properties.&amp;nbsp; I didn&amp;#39;t want to write my own search page because the search center already produces great looking results and it would be a lot of effort to reinvent everything on the search page.&amp;nbsp; The reason why you would have had to write your own search page is that you could not get access via conventional means to the objects to change the query.&lt;/p&gt; &lt;p&gt;This is why I finally decided to take matters into my own hand.&amp;nbsp; I really just wanted to just inherit from CoreResultsWebPart, change out the keyword query with a FullTextSqlQuery and call it good.&amp;nbsp; Anyone who may have looked at this before knows it is not that simple.&amp;nbsp; The class that does all the work &lt;em&gt;SearchResultsHiddenObject&lt;/em&gt; is marked internal.&amp;nbsp;&amp;nbsp; Right now this seems an impossible task unless you bend the rules a little.&amp;nbsp; That&amp;#39;s right.&amp;nbsp; I decided I am going to break OO rules and use reflection to get to the properties I needed.&amp;nbsp; Some people say you should never do this and that its a hack.&amp;nbsp; I agree to some extent, but when you are programming against an API and the provider of said API doesn&amp;#39;t give you the tools you need to do your job, sometimes you have to bend the rules.&amp;nbsp; Let&amp;#39;s face it.&amp;nbsp; Microsoft should have given us this support out of the box and at the minimum should have allowed us to change the query that the CoreResultsWebPart executes through the API.&amp;nbsp; They did neither so here we are.&lt;/p&gt; &lt;p&gt;So how does the code work?&amp;nbsp; Well, CoreResultsWebPart happens to be the one class in all of the Enterprise Search controls that isn&amp;#39;t marked sealed.&amp;nbsp; That is good news.&amp;nbsp; Through the use of Reflector, I discovered the method I need to inherit from is &lt;em&gt;SetPropertiesOnHiddenObject&lt;/em&gt;.&amp;nbsp; Microsoft was even nice enough to mark this method as virtual for me.&amp;nbsp; I then got access to the type and then used the base type to get a FieldInfo object for the private field srho (which is the SearchResultsHiddenObject).&amp;nbsp; &lt;/p&gt; &lt;div style="font-size:10pt;background:white;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// get the type of the current object&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;Type&lt;/span&gt; coreResultsWebPartType = &lt;span style="color:blue;"&gt;this&lt;/span&gt;.GetType();&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// get the private field containing the searchResultsHiddenObject&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;FieldInfo&lt;/span&gt; searchResultsHiddenObjectField = coreResultsWebPartType.BaseType.GetField(&lt;span style="color:#a31515;"&gt;&amp;quot;srho&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;BindingFlags&lt;/span&gt;.NonPublic | &lt;span style="color:#2b91af;"&gt;BindingFlags&lt;/span&gt;.Instance);&lt;/p&gt;&lt;/div&gt; &lt;p&gt;Once, I got access to the hidden object, I read the value of the KeywordQuery property to get what the user searched for.&amp;nbsp; I then had to set this value to null, because I was replacing the keyword query with a FullTextSqlQuery.&amp;nbsp; &lt;/p&gt; &lt;div style="font-size:10pt;background:white;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// get the actual internal srho object attached to CoreResultsWebPart&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;object&lt;/span&gt; searchResultsHiddenObject = searchResultsHiddenObjectField.GetValue(&lt;span style="color:blue;"&gt;this&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// get the type of the srho&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;Type&lt;/span&gt; searchResultsHiddenObjecType = searchResultsHiddenObject.GetType();&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// get the keyword query property&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;PropertyInfo&lt;/span&gt; keywordQueryProperty = searchResultsHiddenObjecType.GetProperty(&lt;span style="color:#a31515;"&gt;&amp;quot;KeywordQuery&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;BindingFlags&lt;/span&gt;.Instance | &lt;span style="color:#2b91af;"&gt;BindingFlags&lt;/span&gt;.Public);&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// read what the user searched for&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; keywordQuery = (&lt;span style="color:blue;"&gt;string&lt;/span&gt;)keywordQueryProperty.GetValue(searchResultsHiddenObject, &lt;span style="color:blue;"&gt;null&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// set the keywordProperty to null so we can change it to a fullTextQuery&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;keywordQueryProperty.SetValue(searchResultsHiddenObject, &lt;span style="color:blue;"&gt;null&lt;/span&gt;, &lt;span style="color:blue;"&gt;null&lt;/span&gt;);&lt;/p&gt;&lt;/div&gt; &lt;p&gt;It was then just a matter of forming a new SQL query string (check the code on how I did that), and setting some additional fields &lt;em&gt;_IsFullTextQuerySetFromForm&lt;/em&gt; and &lt;em&gt;m_bIsKeywordQuery&lt;/em&gt;.&amp;nbsp; &lt;/p&gt; &lt;div style="font-size:10pt;background:white;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// get the fullTextQuery field&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;PropertyInfo&lt;/span&gt; fullTextQueryProperty = searchResultsHiddenObjecType.GetProperty(&lt;span style="color:#a31515;"&gt;&amp;quot;FullTextQuery&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;BindingFlags&lt;/span&gt;.Instance | &lt;span style="color:#2b91af;"&gt;BindingFlags&lt;/span&gt;.Public);&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// create a new query and set it&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt; fullTextQueryString = GetFullTextQuery(keywordQuery, keywordsAsQuery);&lt;/p&gt; &lt;p style="margin:0px;"&gt;fullTextQueryProperty.SetValue(searchResultsHiddenObject, fullTextQueryString, &lt;span style="color:blue;"&gt;null&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// this field needs to be set to true to use a full text query&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;FieldInfo&lt;/span&gt; fullTextQuerySetField = searchResultsHiddenObjecType.GetField(&lt;span style="color:#a31515;"&gt;&amp;quot;_IsFullTextQuerySetFromForm&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;BindingFlags&lt;/span&gt;.NonPublic | &lt;span style="color:#2b91af;"&gt;BindingFlags&lt;/span&gt;.Instance);&lt;/p&gt; &lt;p style="margin:0px;"&gt;fullTextQuerySetField.SetValue(searchResultsHiddenObject, &lt;span style="color:blue;"&gt;true&lt;/span&gt;);&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// tell the srho that it is not a keyword query any more&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;FieldInfo&lt;/span&gt; isKeywordQueryField = searchResultsHiddenObjecType.GetField(&lt;span style="color:#a31515;"&gt;&amp;quot;m_bIsKeywordQuery&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;BindingFlags&lt;/span&gt;.NonPublic | &lt;span style="color:#2b91af;"&gt;BindingFlags&lt;/span&gt;.Instance);&lt;/p&gt; &lt;p style="margin:0px;"&gt;isKeywordQueryField.SetValue(searchResultsHiddenObject, &lt;span style="color:blue;"&gt;false&lt;/span&gt;);&lt;/p&gt;&lt;/div&gt; &lt;p&gt;The code for this is really pretty simple (aside from the reflection).&amp;nbsp; Had the SearchResultsHiddenObject been marked public, we could have had this functionality over a year ago, but oh well.&amp;nbsp; &lt;/p&gt; &lt;h3&gt;Installation&lt;/h3&gt; &lt;p&gt;Installation is relatively simple and instructions are included in a readme file in the document.&amp;nbsp; A solution package has been provided for ease of installation.&amp;nbsp; Once the package has been installed activate the Wildcard Search Web Part feature on your site collection.&amp;nbsp; I went with a site collection feature because the search center site does not have a web part gallery in it.&amp;nbsp; Now that the feature is activated, go to your results page in your Search Center, edit the page, and add the Wildcard Search Core Results Web Part to the Bottom Zone.&amp;nbsp; You can then remove the old CoreResultsWebPart.&amp;nbsp; Also note that this web part requires .NET Framework 3.5 because I used LINQ to XML to parse through the &lt;em&gt;SelectColumns&lt;/em&gt; property.&lt;/p&gt; &lt;h3&gt;Usage&lt;/h3&gt; &lt;p&gt;Once you have the web part installed, you can perform a wildcard search by just adding an asterisk to whatever you type in the search box.&amp;nbsp; For example &lt;em&gt;app*&lt;/em&gt; would return mataches on app, apple, and application.&amp;nbsp; You can also set the &lt;em&gt;Always Use Wildcard &lt;/em&gt;property in the Miscellaneous property settings to always perform a wildcard search.&lt;/p&gt; &lt;p&gt;One thing to note.&amp;nbsp; Wildcard searches reek havoc on your search relevance.&amp;nbsp; Where you might be used to having nice clean looking results with your keyword searches, your wildcard searches will look different.&amp;nbsp; It might not always be obvious why a particular item was returned in the search results.&amp;nbsp; The best thing to do is try and see if it works for your particular situation.&lt;/p&gt; &lt;p&gt;This type of web part probably could have been sold, but I thought it was more important to give it to the community.&amp;nbsp; This feature gets asked for by MOSS customers all the time.&amp;nbsp; Finally there is an easy solution to implementing it.&amp;nbsp; Since this web part is new, I am sure there are going to be issues with it.&amp;nbsp; Please, log any issues you run into in installation or in us on the issue tracker of the CodePlex site.&amp;nbsp; Currently, it only supports simple keyword queries.&amp;nbsp; I still need to implement support for passing scopes and managed properties, so look for that in an update soon.&lt;/p&gt; &lt;p&gt;You can find the release files at &lt;a href="http://www.codeplex.com/WildcardSearch"&gt;CodePlex&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Corey Roth is a MOSS consultant for &lt;a href="http://www.sbti.com/"&gt;Stonebridge&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;img src="http://www.dotnetmafia.com/aggbug.aspx?PostID=603" width="1" height="1"&gt;</description><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/LINQ+to+XML/default.aspx">LINQ to XML</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Enterprise+Search/default.aspx">Enterprise Search</category><category domain="http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Wildcard+Search/default.aspx">Wildcard Search</category></item></channel></rss>