<?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] : Enterprise Search, Wildcard Search, MOSS</title><link>http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/tags/Enterprise+Search/Wildcard+Search/MOSS/default.aspx</link><description>Tags: Enterprise Search, Wildcard Search, MOSS</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><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>