<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Everything Microsoft.</title><subtitle type="html">There is a thin line between knowing and not knowing. This is my attempt on crossing that line.</subtitle><id>http://blogs.msdn.com/arbindo/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/arbindo/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/arbindo/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2008-04-04T19:39:00Z</updated><entry><title>Application Platform - A Perspective</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/arbindo/archive/2009/07/20/application-platform-a-perspective.aspx" /><id>http://blogs.msdn.com/arbindo/archive/2009/07/20/application-platform-a-perspective.aspx</id><published>2009-07-20T04:05:00Z</published><updated>2009-07-20T04:05:00Z</updated><content type="html">&lt;P&gt;For every developer and for anyone who earns their livlihood in Information Technology world, I highly recommend watching this 1 hour&lt;A href="http://channel9.msdn.com/posts/matthijs/David-Chappell-The-Microsoft-Application-Platform-A-perspective/" target=_blank mce_href="http://channel9.msdn.com/posts/matthijs/David-Chappell-The-Microsoft-Application-Platform-A-perspective/"&gt; video&lt;/A&gt; by &lt;A href="http://www.davidchappell.com/" target=_blank mce_href="http://www.davidchappell.com/"&gt;David Chappell&lt;/A&gt;. I admire David for his great story telling ability and at the same time making his topic interesting and simple to grasp. &lt;/P&gt;
&lt;P&gt;In this particular talk David takes his audience from early days of (modern) platform technologies - birth of Java and .NET - to clound computing. The most interesting part to me was the whole topic of SOA and why he thinks it has failed to gain as much traction as it was hyped.&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;
&lt;P&gt;Arbindo&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9840648" width="1" height="1"&gt;</content><author><name>arbindoc</name><uri>http://blogs.msdn.com/members/arbindoc.aspx</uri></author><category term="Development" scheme="http://blogs.msdn.com/arbindo/archive/tags/Development/default.aspx" /></entry><entry><title>CMIS – The common language for Content Repositories</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/arbindo/archive/2009/07/19/cmis-the-common-language-for-content-repositories.aspx" /><id>http://blogs.msdn.com/arbindo/archive/2009/07/19/cmis-the-common-language-for-content-repositories.aspx</id><published>2009-07-19T19:50:00Z</published><updated>2009-07-19T19:50:00Z</updated><content type="html">&lt;P&gt;During early days of my career, I was taught that one of the most important tenets of software design is “Separation of Concern” – break your software into modules that perform or manage one and only one task. Once you have all your modules in place, make them communicate with each other to accomplish overall requirements. &lt;/P&gt;
&lt;P&gt;Every &lt;A href="http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1248021940&amp;amp;sr=8-1" target=_blank mce_href="http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1248021940&amp;amp;sr=8-1"&gt;design pattern&lt;/A&gt; basically tries to achieve ‘Separation of Concern’ and provide communication mechanism between various modules. When you have multiple modules interacting with one another, you may also want to replace a module with another without breaking the overall software. This is ensured by designing loosely coupled modules that do not depend on another module explicitly, but communicates using well defined interfaces.&lt;/P&gt;
&lt;P&gt;Without these design principles – modular, loose coupling and well defined interfaces - , it is difficult to imagine the progress we have made in software technology. Today you have various software vendors such as Microsoft, Oracle, IBM etc. building database solutions. Each one of them providing their own niche that is different than others. However, each of their database adhere to common standard, SQL, without which we couldn’t have built application that work with different databases. For instance, ERP applications, such as from SAP, works with DB2, Oracle or SQL Server because SQL is used to communicate with backend database.&lt;/P&gt;
&lt;P&gt;As Content Management space is getting matured every year and more and more organizations are demanding rich applications, there is clearly a need for standards for content management similar to standards we have for database. I am glad that most of the big players are already thinking and working hard to make it possible in near future. This standard, which is still in draft form, is called &lt;A href="http://www.oasis-open.org/committees/cmis/charter.php#item-3" target=_blank mce_href="http://www.oasis-open.org/committees/cmis/charter.php#item-3"&gt;Content Management Interoperability Standards&lt;/A&gt; (CMIS). This was announced roughly a year back in SharePoint Records Center team &lt;A href="http://blogs.msdn.com/ecm/archive/2008/09/09/announcing-the-content-management-interoperability-services-cmis-specification.aspx" target=_blank mce_href="http://blogs.msdn.com/ecm/archive/2008/09/09/announcing-the-content-management-interoperability-services-cmis-specification.aspx"&gt;blog&lt;/A&gt;. Since then lot of progress has been made , so I thought of providing a quick update.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What is CMIS?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;CMIS is currently a draft standard by OASIS and its goal is to provide a standard way of interacting with content management repositories. Just like SQL is a standard way of interaction with database (structured content), CMIS would provide a SQL equivalent to interact with content management repositories (unstructured / semi structured content). &lt;/P&gt;
&lt;P&gt;CMIS intends to provide interfaces to most common set of tasks that is generally supported by every content management application. It will provide common set of data models and interfaces to interact with content management repository.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What CMIS is not?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;CMIS will not address how a particular interface is implemented. Implementation is left to vendor specific application. CMIS addresses WHAT needs to be implemented rather than HOW it should be implemented. The HOW of implementation is something that will differentiate one vendor from another. &lt;/P&gt;
&lt;P&gt;CMIS also does not address the authentication with content repository. It is left to the vendor to ensure requests to repository is authenticated.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;CMIS use cases&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;First version of CMIS will address functions that are most common for every content repository. These functions or use cases are called core use cases, which includes:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;U&gt;Core Use Cases&lt;/U&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;1. Collaborative and Content Applications&lt;/P&gt;
&lt;P&gt;2. Portal leveraging content management repositories&lt;/P&gt;
&lt;P&gt;3. Mashups&lt;/P&gt;
&lt;P&gt;4. Searching a Content Repository&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;EM&gt;Following is list of use cases that can be built on top of core uses cases; i.e, by leveraging core uses cases&lt;/EM&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;1. Workflow and BPM centric applications utilizing content&lt;/P&gt;
&lt;P&gt;2. Archival Applications&lt;/P&gt;
&lt;P&gt;3. Compound and Virtual Documents&lt;/P&gt;
&lt;P&gt;4. Electronic and Legal Discovery : I am looking forward to this one. eDiscovery is one of the biggest challenges every organization faces today as it is a complex and manual process. Manual because content is present in various repositories and without a standard way of searching, the eDiscovery task becomes time consuming and expensive. I plan on writing a post on eDiscovery some time soon.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;U&gt;Following is list of use cases that are &lt;STRONG&gt;out of scope &lt;/STRONG&gt;for initial set of deliverables by OASIS TC for CMIS&lt;/U&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;1. Records Management and Compliance&lt;/P&gt;
&lt;P&gt;2. Digital Asset Management&lt;/P&gt;
&lt;P&gt;3. Web Content Management&lt;/P&gt;
&lt;P&gt;4. Subscription and Notification Services&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;CMIS and other standards&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;CMIS, like most other standards will be based off XML. Data models by CMIS will be defined using XML Schema Definition (XSD). Following is list of other interoperable binding that OASIS TC for CMIS may support.&lt;/P&gt;
&lt;P&gt;1. Web Services 2. REST 3. JSON-RPC 4. XMPP 5. JMS 6. JCA and 7. SMTP&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Benefits of CMIS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;One of the most well known design pattern in software world is &lt;A href="http://en.wikipedia.org/wiki/Model-view-controller" target=_blank mce_href="http://en.wikipedia.org/wiki/Model-view-controller"&gt;MVC&lt;/A&gt; (Model View Controller). MVC provides flexibility of changing Model (Data) and View (Presentation) by delinking both of them and ensuring that View communicated with Model only through Controller. &lt;/P&gt;
&lt;P&gt;I think CMIS is the Controller for content repositories. With CMIS, content repositories can be used by other applications just like they use databases. I am not saying this is the plan or intention of SharePoint product&amp;nbsp; team, but with CMIS in place, products like SharePoint can easily plug into other applications such as one that is provided by EMC or Open Text for Archival.&lt;/P&gt;
&lt;P&gt;With standards support such as REST, the repository could be easily accessed via browser and mobile phones. There could be applications that just provide presentation layer and in the backend interacts with multiple repositories using CMIS.&lt;/P&gt;
&lt;P&gt;I would hope for a day when every repository supports CMIS so that eDiscovery could reach out to every content using CMIS.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Useful Links for CMIS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I have bookmarked several relevant links to read more about CMIS &lt;A href="http://delicious.com/avi_pioneer/CMIS" target=_blank mce_href="http://delicious.com/avi_pioneer/CMIS"&gt;here&lt;/A&gt;, and I will continue to update these links as I learn more.&lt;/P&gt;
&lt;P&gt;Alfresco Labs has also &lt;A href="http://www.cmswire.com/cms/enterprise-cms/alfresco-offers-first-implementation-of-cmis-in-alfresco-labs-3-003136.php" target=_blank mce_href="http://www.cmswire.com/cms/enterprise-cms/alfresco-offers-first-implementation-of-cmis-in-alfresco-labs-3-003136.php"&gt;built a first implementation&lt;/A&gt; of CMIS based on draft specification.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;CMIS and SharePoint&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;There is currently no news of support of CMIS in next version of SharePoint. CMIS is still in draft form, so I doubt there will be any public announcement of support for CMIS in SharePoint 2010. However, Microsoft is one of the TC members in OASIS working aggressively on CMIS standard. You can read the &lt;A href="http://go.microsoft.com/fwlink/?LinkId=127855" target=_blank mce_href="http://go.microsoft.com/fwlink/?LinkId=127855"&gt;draft specification&lt;/A&gt; by Microsoft&lt;/P&gt;
&lt;P&gt;There is also a MSDN &lt;A href="http://msdn.microsoft.com/en-us/library/dd440954.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/dd440954.aspx"&gt;article&lt;/A&gt; that demonstrates integration of external repository into SharePoint using draft CMIS specification.&lt;/P&gt;
&lt;P&gt;There is lot to look forward to and build as soon as CMIS delivers version 1.&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;Arbindo&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9840196" width="1" height="1"&gt;</content><author><name>arbindoc</name><uri>http://blogs.msdn.com/members/arbindoc.aspx</uri></author><category term="ECM" scheme="http://blogs.msdn.com/arbindo/archive/tags/ECM/default.aspx" /><category term="CMIS" scheme="http://blogs.msdn.com/arbindo/archive/tags/CMIS/default.aspx" /></entry><entry><title>5 things you should know about SharePoint 2007 Records Center</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/arbindo/archive/2009/07/01/5-things-you-should-know-about-sharepoint-2007-records-center.aspx" /><id>http://blogs.msdn.com/arbindo/archive/2009/07/01/5-things-you-should-know-about-sharepoint-2007-records-center.aspx</id><published>2009-07-02T01:54:24Z</published><updated>2009-07-02T01:54:24Z</updated><content type="html">&lt;p&gt;For past couple of months, I have been working on large implementation of Records Center site in SharePoint 2007. During this time, I have come across few features in Records Center site template that are quite different from a regular SharePoint site template such as Collaboration and Team site template. Obviously, the Records Center comes with Hold infrastructure that consists of Holds List and Record Routing List, but these features make document library function differently. I spent considerable amount of time trying to research why document libraries are not functioning the way I would expect them in a Team or a Collaboration Site. There is nothing wrong in functionality, it is just that there is not much information around how document libraries in Records Center function differently in Records Center&lt;/p&gt;  &lt;p&gt;I hope by sharing my information, people implementing Records Center can save time researching on this topic.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. Cannot save library as Template:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;When you create a new document library, you will notice that it functions the same way as you would expect a document library to function. Things get little different as soon as you have a single document put on hold. The first thing you will notice that “&lt;em&gt;Save document library as template” &lt;/em&gt;link disappears from Settings. Even before a document is placed on hold, if you click on that link and save the document library as template, you will not see the template in the &lt;em&gt;Create &lt;/em&gt;screen. In short, you cannot save document libraries as template and use the template to create new document library.&lt;/p&gt;  &lt;p&gt;Interestingly, you could create a &lt;a href="http://msdn.microsoft.com/en-us/library/ms434306.aspx" target="_blank"&gt;List Template&lt;/a&gt; Feature and publish a library template. You are just not allowed to do it using User Interface.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2. Library Permission inheritance is broken:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A new document library, by default, inherits permission from Site Collection. When you go to Document Library –&amp;gt; Settings –&amp;gt; Document Library Settings –&amp;gt; Permissions for document library, you will see that permissions are inherited and not broken. However, as soon as you create a Record Routing entry with location pointing to your document library, the permission inheritance is broken. So adding new users / groups in site collection, will not make it the library.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3. Cannot Delete Document Library:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Similar to point 1, &lt;em&gt;Delete this document library &lt;/em&gt;link disappears from document library settings screen as soon as a Routing Entry is created in Record Routing List that points to new document library. This means, you will not be able to delete the document library as long as the library has a document with hold, or there is a routing entry in Record Routing List that points to document library. As soon as the Record Routing entry is deleted, you will notice that &lt;em&gt;Delete this document library &lt;/em&gt;link appears in the Document library settings. One other important point to note is that the user deleting the routing entry should be Site Collection administrator. If the routing entry is deleted by non Site collection administrator, then the delete link is not brought back.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;4. Record Routing List:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Several activities happen behind the scene when a new Record Routing entry is created. Before we get to that, it is important to note that Record Routing List is supposed to be managed only by Site Collection Administrators. This list’s permission does not inherit from Site Collection. By default, this list has &lt;em&gt;Viewers&lt;/em&gt; and &lt;em&gt;Records Center Web Service Submitters&lt;/em&gt; with View Only and Read permission respectively. You could add&amp;#160; a SharePoint group or a user to the library with Full Control or Contribute permission, and that will allow that group / user to add, edit and delete entries. However, deleting a routing entry will not bring back &lt;em&gt;Delete this document library &lt;/em&gt;link&lt;em&gt; &lt;/em&gt;in the document library. See point 3 for more details.&lt;/p&gt;  &lt;p&gt;When a new routing entry is created, the document library that is specified in the Location goes through few changes: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;a. Permission inheritance is broken for the document library (See point 2)&lt;/p&gt;    &lt;p&gt;b.. &lt;em&gt;Save this document library as template &lt;/em&gt;link disappears from Document Library Settings. This link anyways is of no help (see point 1)&lt;/p&gt;    &lt;p&gt;c. &lt;em&gt;Delete this document library &lt;/em&gt;link disappears from Document Library Settings (See point 3).&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;5. Release Active Hold:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I, like many others, assumed that if a user has contribute permission on the Holds list, the user could Add, Edit a new hold or Release an existing hold. Though Add and Edit is possible using Contribute permission, Release hold requires &lt;em&gt;Manage List &lt;/em&gt;permission level checked.&lt;/p&gt;  &lt;p&gt;Based on all the above findings, I have concluded that Record Routing List should always be managed by Site Collection Administrator. Though, this is not obvious in the tool as you can add other users in the permissions, it causes unexpected behaviors in document libraries.&lt;/p&gt;  &lt;p&gt;After thinking about the working of Records Center, I believe the way it is designed is aligned with how a Records department works in an organization. There are typically number of attorneys grouped by area of specialty responsible for a litigation. Also there are only few Records Manager responsible for all litigation holds. Litigations are sensitive in nature and therefore shared with only handful of people that are working on a particular litigation. &lt;/p&gt;  &lt;p&gt;When a routing entry is created, permission inheritance is broken in the library. This ensures that any new user or a group added to site collection do not get access to the content that are held for litigation. &lt;em&gt;Save library as template &lt;/em&gt;is disabled to prevent content on hold to be saved&amp;#160; as template. &lt;em&gt;Delete this document library &lt;/em&gt;is disabled to prevent even Site Collection Administrators from deleting content or library that is being held until the hold is released. Though attorneys are responsible for individual holds that they manage, they are not allowed to add, delete or change record routing entries. Record Routing entries have global impact (in context of Records Center), as content from multiple content type can be routed to single library. Therefore, only handful of users – Site Collection Administrators – are responsible to Record Routing entries.&lt;/p&gt;  &lt;p&gt;Hope some people saves time by reading this.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9812165" width="1" height="1"&gt;</content><author><name>arbindoc</name><uri>http://blogs.msdn.com/members/arbindoc.aspx</uri></author><category term="Sharepoint" scheme="http://blogs.msdn.com/arbindo/archive/tags/Sharepoint/default.aspx" /><category term="RecordsCenter" scheme="http://blogs.msdn.com/arbindo/archive/tags/RecordsCenter/default.aspx" /></entry><entry><title>Extending SharePoint CoreResultsWebPart</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/arbindo/archive/2009/06/21/extending-sharepoint-coreresultswebpart.aspx" /><id>http://blogs.msdn.com/arbindo/archive/2009/06/21/extending-sharepoint-coreresultswebpart.aspx</id><published>2009-06-21T20:00:00Z</published><updated>2009-06-21T20:00:00Z</updated><content type="html">&lt;P&gt;My previous &lt;A href="http://blogs.msdn.com/arbindo/archive/2008/04/04/Customizing-SharePoint-2007-Search-Result-for-Structured-Content.aspx" mce_href="http://blogs.msdn.com/arbindo/archive/2008/04/04/Customizing-SharePoint-2007-Search-Result-for-Structured-Content.aspx"&gt;post&lt;/A&gt; explained technique of altering the search results presentation using XSLT. Though I prefer using XSLT for presentation related changes, server side changes to search logic is not possible using XSLT. This post describes technique on extending the out of the box CoreResultsWebPart for adding server side logic to search query execution.&lt;/P&gt;
&lt;P&gt;The example in this post will provide a web part property, named &lt;EM&gt;Extended Keyword Query, &lt;/EM&gt;which will allow designers to add additional query filters to keyword query issued by end user. A scenario where this could be useful is when you need to have a custom search results page that only displays results that are tagged as Documents in SharePoint. This could also be achieved by end user using &lt;EM&gt;Advanced Search &lt;/EM&gt;with &lt;EM&gt;Results Type &lt;/EM&gt;as ‘&lt;EM&gt;Document’ &lt;/EM&gt;(see figure 1). In our example, end user simply enters keyword in search box and the results will only include content tagged as &lt;EM&gt;Document.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Figure 1&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/arbindo/WindowsLiveWriter/ExtendingSharePointCoreResultsWebPart_A51D/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/arbindo/WindowsLiveWriter/ExtendingSharePointCoreResultsWebPart_A51D/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="" border=0 alt="" src="http://blogs.msdn.com/blogfiles/arbindo/WindowsLiveWriter/ExtendingSharePointCoreResultsWebPart_A51D/image_thumb.png" width=350 height=186 mce_src="http://blogs.msdn.com/blogfiles/arbindo/WindowsLiveWriter/ExtendingSharePointCoreResultsWebPart_A51D/image_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;We will start with creating a web part class that inherits from CoreResulsWebPart. Start a new Project in Visual Studio.NET. If you have VseWSS installed, select &lt;EM&gt;SharePoint –&amp;gt; Web Part &lt;/EM&gt;template. Add &lt;EM&gt;Microsoft.SharePoint.dll &lt;/EM&gt;and &lt;EM&gt;Microsoft.Office.Server.Search.dll &lt;/EM&gt;as Reference.&lt;/P&gt;
&lt;P&gt;Declare a private field named _extendedQuery that will hold value for the additional query term.&lt;/P&gt;
&lt;DIV style="BORDER-BOTTOM: silver 1px solid; TEXT-ALIGN: left; BORDER-LEFT: silver 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; MAX-HEIGHT: 200px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: silver 1px solid; CURSOR: text; BORDER-RIGHT: silver 1px solid; PADDING-TOP: 4px" id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum1&gt;   1:&lt;/SPAN&gt; [Guid(&lt;SPAN style="COLOR: #006080"&gt;"d6d212a1-dbca-4150-b023-e64c480bc8b6"&lt;/SPAN&gt;)]&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum2&gt;   2:&lt;/SPAN&gt;     &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; AdvSearchResultsWebPart : Microsoft.Office.Server.Search.WebControls.CoreResultsWebPart&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum3&gt;   3:&lt;/SPAN&gt;     {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum4&gt;   4:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; _extendeQuery = String.Empty;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum5&gt;   5:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum6&gt;   6:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; AdvSearchResultsWebPart()&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum7&gt;   7:&lt;/SPAN&gt;             : &lt;SPAN style="COLOR: #0000ff"&gt;base&lt;/SPAN&gt;()&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum8&gt;   8:&lt;/SPAN&gt;         {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum9&gt;   9:&lt;/SPAN&gt;             &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum10&gt;  10:&lt;/SPAN&gt;         }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Add a new web part property named, &lt;EM&gt;Extended Keyword Query, &lt;/EM&gt;that lets designer specify additional query term.&lt;/P&gt;
&lt;DIV style="BORDER-BOTTOM: silver 1px solid; TEXT-ALIGN: left; BORDER-LEFT: silver 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; MAX-HEIGHT: 200px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: silver 1px solid; CURSOR: text; BORDER-RIGHT: silver 1px solid; PADDING-TOP: 4px" id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum1&gt;   1:&lt;/SPAN&gt; [Personalizable(PersonalizationScope.Shared)]&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum2&gt;   2:&lt;/SPAN&gt;     [WebBrowsable(&lt;SPAN style="COLOR: #0000ff"&gt;true&lt;/SPAN&gt;)]&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum3&gt;   3:&lt;/SPAN&gt;     [System.ComponentModel.Category(&lt;SPAN style="COLOR: #006080"&gt;"Advanced"&lt;/SPAN&gt;)]&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum4&gt;   4:&lt;/SPAN&gt;     [WebDisplayName(&lt;SPAN style="COLOR: #006080"&gt;"Extended Keyword Query"&lt;/SPAN&gt;)]&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum5&gt;   5:&lt;/SPAN&gt;     &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; ExtendedQuery&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum6&gt;   6:&lt;/SPAN&gt;     {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum7&gt;   7:&lt;/SPAN&gt;         get { &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; _extendeQuery; }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum8&gt;   8:&lt;/SPAN&gt;         set { _extendeQuery = &lt;SPAN style="COLOR: #0000ff"&gt;value&lt;/SPAN&gt;; }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum9&gt;   9:&lt;/SPAN&gt;     }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Next we override OnLoad method where we merge the keyword query entered by end user with additional query term specified in the &lt;EM&gt;Extended Keyword Query &lt;/EM&gt;web part property.&lt;/P&gt;
&lt;DIV style="BORDER-BOTTOM: silver 1px solid; TEXT-ALIGN: left; BORDER-LEFT: silver 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 91.78%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; HEIGHT: 248px; MAX-HEIGHT: 200px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: silver 1px solid; CURSOR: text; BORDER-RIGHT: silver 1px solid; PADDING-TOP: 4px" id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum1&gt;   1:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;protected&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;override&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; OnLoad(EventArgs e)&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum2&gt;   2:&lt;/SPAN&gt;         {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum3&gt;   3:&lt;/SPAN&gt;             &lt;SPAN style="COLOR: #0000ff"&gt;base&lt;/SPAN&gt;.OnLoad(e);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum4&gt;   4:&lt;/SPAN&gt;             &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #0000ff"&gt;base&lt;/SPAN&gt;.xmlResponseDoc == &lt;SPAN style="COLOR: #0000ff"&gt;null&lt;/SPAN&gt;) &lt;SPAN style="COLOR: #008000"&gt;// add additional term only if query hasn't been executed&lt;/SPAN&gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum5&gt;   5:&lt;/SPAN&gt;                 SetAdditionalQueryTerm();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum6&gt;   6:&lt;/SPAN&gt;         }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum7&gt;   7:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum8&gt;   8:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; SetAdditionalQueryTerm()&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum9&gt;   9:&lt;/SPAN&gt;         {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum10&gt;  10:&lt;/SPAN&gt;             &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (String.IsNullOrEmpty(_extendeQuery))&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum11&gt;  11:&lt;/SPAN&gt;                 &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum12&gt;  12:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum13&gt;  13:&lt;/SPAN&gt;             &lt;SPAN style="COLOR: #0000ff"&gt;object&lt;/SPAN&gt; queryObject = HttpContext.Current.Items[&lt;SPAN style="COLOR: #006080"&gt;"OSSSRHDC_0"&lt;/SPAN&gt;];&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum14&gt;  14:&lt;/SPAN&gt;             Type valType = queryObject.GetType();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum15&gt;  15:&lt;/SPAN&gt;             PropertyInfo fullTextQueryProp = valType.GetProperty(&lt;SPAN style="COLOR: #006080"&gt;"FullTextQuery"&lt;/SPAN&gt;, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum16&gt;  16:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum17&gt;  17:&lt;/SPAN&gt;             &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; query = (String)fullTextQueryProp.GetValue(queryObject, &lt;SPAN style="COLOR: #0000ff"&gt;null&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum18&gt;  18:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum19&gt;  19:&lt;/SPAN&gt;             &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (!_extendeQuery.StartsWith(&lt;SPAN style="COLOR: #006080"&gt;" "&lt;/SPAN&gt;))&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum20&gt;  20:&lt;/SPAN&gt;                 _extendeQuery = &lt;SPAN style="COLOR: #006080"&gt;" "&lt;/SPAN&gt; + _extendeQuery;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum21&gt;  21:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum22&gt;  22:&lt;/SPAN&gt;             &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (String.IsNullOrEmpty(query)) &lt;SPAN style="COLOR: #008000"&gt;// This is Keyword search&lt;/SPAN&gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum23&gt;  23:&lt;/SPAN&gt;             {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum24&gt;  24:&lt;/SPAN&gt;                 PropertyInfo keywordQueryProp = valType.GetProperty(&lt;SPAN style="COLOR: #006080"&gt;"KeywordQuery"&lt;/SPAN&gt;, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum25&gt;  25:&lt;/SPAN&gt;                 query = (String)keywordQueryProp.GetValue(queryObject, &lt;SPAN style="COLOR: #0000ff"&gt;null&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum26&gt;  26:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum27&gt;  27:&lt;/SPAN&gt;                 &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; additionalTerm = String.Empty;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum28&gt;  28:&lt;/SPAN&gt;                 &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum29&gt;  29:&lt;/SPAN&gt;                 &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (!query.Contains(_extendeQuery)) &lt;SPAN style="COLOR: #008000"&gt;// Set additional term only if it is not set already&lt;/SPAN&gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum30&gt;  30:&lt;/SPAN&gt;                 {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum31&gt;  31:&lt;/SPAN&gt;                     keywordQueryProp.SetValue(queryObject, query + _extendeQuery, &lt;SPAN style="COLOR: #0000ff"&gt;null&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum32&gt;  32:&lt;/SPAN&gt;                 }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum33&gt;  33:&lt;/SPAN&gt;             }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum34&gt;  34:&lt;/SPAN&gt;         }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum35&gt;  35:&lt;/SPAN&gt;  &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;The OnLoad method invokes &lt;EM&gt;SetAdditionalQueryTerm &lt;/EM&gt;private method that does the actual work of merging query terms. Lets examine the &lt;EM&gt;SetAdditionalQueryTerm &lt;/EM&gt;method closely.&lt;/P&gt;
&lt;DIV id=codeSnippetWrapper class=csharpcode-wrapper&gt;
&lt;DIV id=codeSnippet class=csharpcode&gt;
&lt;DIV style="BORDER-BOTTOM: silver 1px solid; TEXT-ALIGN: left; BORDER-LEFT: silver 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; MAX-HEIGHT: 200px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: silver 1px solid; CURSOR: text; BORDER-RIGHT: silver 1px solid; PADDING-TOP: 4px" id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum1&gt;   1:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;object&lt;/SPAN&gt; queryObject = HttpContext.Current.Items[&lt;SPAN style="COLOR: #006080"&gt;"OSSSRHDC_0"&lt;/SPAN&gt;];&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum2&gt;   2:&lt;/SPAN&gt; Type valType = queryObject.GetType();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum3&gt;   3:&lt;/SPAN&gt; PropertyInfo fullTextQueryProp = valType.GetProperty(&lt;SPAN style="COLOR: #006080"&gt;"FullTextQuery"&lt;/SPAN&gt;, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum4&gt;   4:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; query = (String)fullTextQueryProp.GetValue(queryObject, &lt;SPAN style="COLOR: #0000ff"&gt;null&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;CoreResultsWebPart stores an object named OSSSRHDC_0 in HttpConext. This object is of type &lt;EM&gt;Microsoft.Office.Server.Search.WebControls.SearchResultHiddenObject&lt;/EM&gt; and contains various information such as Keyword Query, FullTextQuery etc. as its properties. Since &lt;EM&gt;SearchResultsHiddenObject &lt;/EM&gt;is actually hidden, we cannot cast it to its orginal type; therefore, we cast it to &lt;EM&gt;System.Object,&lt;/EM&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Note: &lt;/STRONG&gt;As this is a hidden object as in not documented in SDK, we should keep in mind that it may not work in next version of SharePoint. &lt;/P&gt;
&lt;P&gt;Next three lines (2,3 and 4) uses Reflection to retrieve value from FullTextQuery property from the hidden object. This property contains SQL for search query in case the end user uses Advanced Search. &lt;/P&gt;
&lt;P&gt;Following lines of code merges &lt;EM&gt;query &lt;/EM&gt;variable – that contains query issued by end user – and &lt;EM&gt;_extendedQuery &lt;/EM&gt;variable – that contains the additional query term from the web part property. Finally it sets the merged query term to the &lt;EM&gt;KeywordQuery &lt;/EM&gt;property. CoreResultsWebPart uses the query term from &lt;EM&gt;KeywordQuery &lt;/EM&gt;property to query the SharePoint index using &lt;A href="http://msdn.microsoft.com/en-us/library/ms467796.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms467796.aspx"&gt;keyword syntax&lt;/A&gt;&lt;/P&gt;
&lt;DIV style="BORDER-BOTTOM: silver 1px solid; TEXT-ALIGN: left; BORDER-LEFT: silver 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; MAX-HEIGHT: 200px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: silver 1px solid; CURSOR: text; BORDER-RIGHT: silver 1px solid; PADDING-TOP: 4px" id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum1&gt;   1:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (!_extendeQuery.StartsWith(&lt;SPAN style="COLOR: #006080"&gt;" "&lt;/SPAN&gt;))&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum2&gt;   2:&lt;/SPAN&gt;     _extendeQuery = &lt;SPAN style="COLOR: #006080"&gt;" "&lt;/SPAN&gt; + _extendeQuery;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum3&gt;   3:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum4&gt;   4:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (String.IsNullOrEmpty(query)) &lt;SPAN style="COLOR: #008000"&gt;// This is Keyword search&lt;/SPAN&gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum5&gt;   5:&lt;/SPAN&gt; {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum6&gt;   6:&lt;/SPAN&gt;     PropertyInfo keywordQueryProp = valType.GetProperty(&lt;SPAN style="COLOR: #006080"&gt;"KeywordQuery"&lt;/SPAN&gt;, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum7&gt;   7:&lt;/SPAN&gt;     query = (String)keywordQueryProp.GetValue(queryObject, &lt;SPAN style="COLOR: #0000ff"&gt;null&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum8&gt;   8:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum9&gt;   9:&lt;/SPAN&gt;     &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; additionalTerm = String.Empty;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum10&gt;  10:&lt;/SPAN&gt;     &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum11&gt;  11:&lt;/SPAN&gt;     &lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt; (!query.Contains(_extendeQuery)) &lt;SPAN style="COLOR: #008000"&gt;// Set additional term only if it is not set already&lt;/SPAN&gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum12&gt;  12:&lt;/SPAN&gt;     {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum13&gt;  13:&lt;/SPAN&gt;         keywordQueryProp.SetValue(queryObject, query + _extendeQuery, &lt;SPAN style="COLOR: #0000ff"&gt;null&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum14&gt;  14:&lt;/SPAN&gt;     }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum15&gt;  15:&lt;/SPAN&gt; }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now you are all set. Final steps, which I won’t go in details, is to package the code as Feature and deploy it to SharePoint Farm. To put this web part in action, browse to SharePoint search results page, Edit the page, delete the CoreResultsWebPart and add the web part you just deployed. &lt;/P&gt;
&lt;P&gt;When you modify this web part, you will see the new &lt;EM&gt;Extended Keyword Query &lt;/EM&gt;property under &lt;EM&gt;Miscellaneous &lt;/EM&gt;category. Enter &lt;STRONG&gt;&lt;EM&gt;IsDocument:1 &lt;/EM&gt;(figure 2)&lt;/STRONG&gt;in this property. This will further filter your search results to display content that are tagged as ‘Document’ in SharePoint index.&lt;/P&gt;
&lt;P&gt;Figure 2&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/arbindo/WindowsLiveWriter/ExtendingSharePointCoreResultsWebPart_A51D/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/arbindo/WindowsLiveWriter/ExtendingSharePointCoreResultsWebPart_A51D/image_4.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/arbindo/WindowsLiveWriter/ExtendingSharePointCoreResultsWebPart_A51D/image_thumb_1.png" width=149 height=330 mce_src="http://blogs.msdn.com/blogfiles/arbindo/WindowsLiveWriter/ExtendingSharePointCoreResultsWebPart_A51D/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Any keyword search that directs search results to page that contains your modified web part, will always filter content that are tagged as Document. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Note: &lt;/STRONG&gt;&lt;EM&gt;IsDoucment:1 &lt;/EM&gt;is just an example. You can add it to any managed property filter. For example &lt;EM&gt;Site:http://yoursharepointsite/sites/customer. &lt;/EM&gt;This web part will support all &lt;A href="http://msdn.microsoft.com/en-us/library/ms467796.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms467796.aspx"&gt;keyword query syntax&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Entire code for this web part can be accessed from:&lt;/P&gt;
&lt;P&gt;&lt;A title=http://cid-ed3f2f28de595784.skydrive.live.com/self.aspx/Public/Sharepoint%20Search/AdvSearchResultsWebPart.cs href="http://cid-ed3f2f28de595784.skydrive.live.com/self.aspx/Public/Sharepoint%20Search/AdvSearchResultsWebPart.cs" mce_href="http://cid-ed3f2f28de595784.skydrive.live.com/self.aspx/Public/Sharepoint%20Search/AdvSearchResultsWebPart.cs"&gt;http://cid-ed3f2f28de595784.skydrive.live.com/self.aspx/Public/Sharepoint%20Search/AdvSearchResultsWebPart.cs&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;-Arbindo&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9795813" width="1" height="1"&gt;</content><author><name>arbindoc</name><uri>http://blogs.msdn.com/members/arbindoc.aspx</uri></author><category term="Search" scheme="http://blogs.msdn.com/arbindo/archive/tags/Search/default.aspx" /><category term="Sharepoint" scheme="http://blogs.msdn.com/arbindo/archive/tags/Sharepoint/default.aspx" /><category term="WebPart" scheme="http://blogs.msdn.com/arbindo/archive/tags/WebPart/default.aspx" /></entry><entry><title>Creating Content Types</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/arbindo/archive/2009/06/08/creating-content-types.aspx" /><id>http://blogs.msdn.com/arbindo/archive/2009/06/08/creating-content-types.aspx</id><published>2009-06-08T06:22:00Z</published><updated>2009-06-08T06:22:00Z</updated><content type="html">&lt;P&gt;Content Types in SharePoint 2007 is a powerful mechanism to put content into a lifecycle. Mostly it is used to&amp;nbsp;associate metadata with content, which can be useful for searching. Other content type features, such as workflows, information management policies, event handlers and&amp;nbsp;document templates, if&amp;nbsp;leveraged properly can provide robust lifecycle to content within SharePoint. &lt;A href="http://technet.microsoft.com/en-us/library/cc262729.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc262729.aspx"&gt;Managing Enterprise Metadata with Content Type is a great whitepaper&lt;/A&gt; on content types that&amp;nbsp;describes challenges associated with desigining metadata that is application across enterprise.&lt;/P&gt;
&lt;P&gt;Assuming your enterprise has figured out metadata model&amp;nbsp;for enterprise, this&amp;nbsp;post describes various ways of creating content types in&amp;nbsp;SharePoint 2007 along with its pros and cons.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;1. Create using Site Administration User Interface&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;SharePoint 2007 provides user interface&amp;nbsp;for site administrators to create content types that are scoped at a site collection or a site level. &lt;/P&gt;
&lt;P&gt;This is the most restrictive approach, in the sense that content types cannot be leveraged outside the site collection it was created. However, it provides maximum flexibility for the site administrator to change the definition without affecting other site collections. It also does not require developer involvement as there is no custom code required. This approach is particularly suitable for document centers and team sites that are specialized in nature. For example, a document center site collection for storing company policies. Since all policies will be stored in single site collection, there is hardly any need to share the content types outside the document center.&lt;/P&gt;
&lt;P&gt;The user interface allows adding site columns, reordering columns, template, versioning, workflows and &lt;A href="http://office.microsoft.com/en-us/sharepointserver/HA100995531033.aspx" target=_blank mce_href="http://office.microsoft.com/en-us/sharepointserver/HA100995531033.aspx"&gt;informationmanagement polcies&lt;/A&gt;. It does not allow association of &lt;A href="http://msdn.microsoft.com/en-us/magazine/cc163318.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/magazine/cc163318.aspx"&gt;event handlers&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;2. Package as SharePoint FEATURE&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms479975.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms479975.aspx"&gt;SharePoint Feature&lt;/A&gt; allows content types to be defined declaratively&amp;nbsp;in XML format. Any text editor from Notepad to Visual Studio can be used to write XML, which can be easily packaged into SharePoint Feature and deployed as SharePoint Solution. Content Type Feature is scoped only at site level, therefore, cannot be activated at Farm, web application and sub site level. This is a constraint and needs be considered during design. After a Solution with content type Feature is&amp;nbsp;deployed on&amp;nbsp; a Farm, the&amp;nbsp;Feature shows up within 'Site Collection Features' list under every site collection. This can Feature can be activated only by a site collection administrator, after which, the content type is provisioned for that site collection.&amp;nbsp;Content type definition can be marked as Sealed to prevent any&amp;nbsp;modification by end user.&lt;/P&gt;
&lt;P&gt;Except for Information Management Policies, the XML definition can be used to describe Fields, event handlers and workflows. Each Field in Content Type refers to Site Column and can be used to override display name and mandatory requirement. Event&amp;nbsp;handlers&amp;nbsp;refer to event type and binaries that contain code to execute on&amp;nbsp;particular event. Similarly, workflows refer to workflow definitions that&amp;nbsp;exist at site collection.&lt;/P&gt;
&lt;P&gt;The biggest advantage of this approach&amp;nbsp;is having a single content type definition that&amp;nbsp;can be used across site collections. For e.g. if your enterprise wishes to collect&amp;nbsp;specific properties, such as Project Number, Duration, Cost etc., for every project related content, then a Project content type can be defined a SharePoint Feature and made available across SharePoint Farm. Any team site or document center that wishes to store project related content can activate&amp;nbsp;Project content type Feature and&amp;nbsp; have consistent metadata captured for Project content. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;3.&amp;nbsp;Write custom code &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Custom code involves writing .NET code using SharePoint Object model to create columns, events, workflows as well as Information management policies. Note that Information Policies are not applicable to content types in WSS. Similar to Feature approach, custom code can provide single content type definition - in form of .NET code - that can be applied across site collections. Code is less desirable for obvious reasons such as testing and maintenance, but provides highest flexibility. Certain operations such as creation of lookup columns and information policies can be achieved only using custom code.&lt;/P&gt;
&lt;P&gt;It requires developers to write code and package it as a Feature, where the code runs when the Feature is either Installed or Activated. It is a good practice to remove the content type when the Feature is deactivated or uninstalled. This approach can also be used to provision a content type across site collections within a web application. To achieve this, a developer can create a Feature that is scoped at Web Application and write code in Feature Activated event that create content type in every site collection. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It will be interesting to see how Content Types evolve in SharePoint 2010. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9707399" width="1" height="1"&gt;</content><author><name>arbindoc</name><uri>http://blogs.msdn.com/members/arbindoc.aspx</uri></author><category term="Sharepoint" scheme="http://blogs.msdn.com/arbindo/archive/tags/Sharepoint/default.aspx" /><category term="ContentType" scheme="http://blogs.msdn.com/arbindo/archive/tags/ContentType/default.aspx" /></entry><entry><title>Activating Content Type Feature at Web Application Scope</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/arbindo/archive/2009/05/30/activating-content-type-at-web-application-scope.aspx" /><id>http://blogs.msdn.com/arbindo/archive/2009/05/30/activating-content-type-at-web-application-scope.aspx</id><published>2009-05-30T23:37:00Z</published><updated>2009-05-30T23:37:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;In SharePoint 2007, one of the ways of provisioning content type is by packaging content type definition as &lt;A href="http://msdn.microsoft.com/en-us/library/ms454431.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms454431.aspx"&gt;SharePoint Feature&lt;/A&gt;. This&amp;nbsp;method allows a single content type&amp;nbsp;definition to be leveraged across multipe site collections. One drawback of &amp;nbsp;this method is it's inability to restrict the Feature to be activated&amp;nbsp;within a pariticular web application. &lt;/P&gt;
&lt;P&gt;Content Type Features&amp;nbsp;can be scoped only at a&amp;nbsp;Site level. When this Feature is installed, it appears on&amp;nbsp;every site collection in&amp;nbsp;every web application.&amp;nbsp;There are scenarios when this&amp;nbsp;Feature needs to be activated only at a particular web application. For e.g. if you have&amp;nbsp;two web applications; one&amp;nbsp;for Sales&amp;nbsp;and other for Marketing, you wouldn't want Sales specific content types&amp;nbsp;to be activated in Marketing web application and vice versa.&lt;/P&gt;
&lt;P&gt;One approach to work around this challenge is to write custom code in Feature activated event that makes the decision on whether the Feature can be activated. The other approach is to create a dependent Feature, scoped at Web Application, which would prevent Content Type Feature activation unless the dependent Feature is activated. Following section demonstrates the dependent Feature method:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 1 - Create Web Application Feature:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In this step, we will create a blank Feature, scoped at Web Application. Sole purpose of this Feature is to provide Activation Dependency for the Content Type Feature.&amp;nbsp;Unless this Feature is activate for a Web&amp;nbsp;Application, the content type Feature cannot be activated at site collection&lt;/P&gt;
&lt;P mce_keep="true"&gt;________________________________&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;BR&gt;&amp;lt;Feature&amp;nbsp; Id="E4160D49-39CC-4a17-B700-03E4129F1350"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Title="Allow Customer Content Type Feature"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Description="Activating this Feature&amp;nbsp;will allow site collection administrators to activate Customer Content Type Feature"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Version="12.0.0.0"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hidden="FALSE"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Scope="WebApplication"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DefaultResourceFile="core"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns="&lt;A href="http://schemas.microsoft.com/sharepoint/"&gt;http://schemas.microsoft.com/sharepoint/&lt;/A&gt;"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;ElementManifests&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/ElementManifests&amp;gt;&lt;BR&gt;&amp;lt;/Feature&amp;gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;______________________&lt;/P&gt;
&lt;P mce_keep="true"&gt;Note that ElementManifest tag is empty because this Feature does not contain any elements.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step&amp;nbsp;2 - Create Content Type Definition and Feature:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In this step, we will create content type definition and Feature that will provision the content type. The imporant part here is the &lt;A href="http://msdn.microsoft.com/en-us/library/aa543162.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/aa543162.aspx"&gt;Activation Dependency&lt;/A&gt; to the Web application Feature.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;B&gt;&lt;U&gt;Content Type Definition&lt;/U&gt;&lt;/B&gt;&lt;/EM&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;BR&gt;&amp;lt;Elements Id="25994054-FF0E-49b1-8785-143D1A433924" xmlns="&lt;A href="http://schemas.microsoft.com/sharepoint/"&gt;http://schemas.microsoft.com/sharepoint/&lt;/A&gt;"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;ContentType ID="0x01010043e1c49b93d74e4b968fb95a6a330da40204"&lt;BR&gt;&amp;nbsp;&amp;nbsp;Name="Customer"&lt;BR&gt;&amp;nbsp;&amp;nbsp;Group="Document Content Types"&lt;BR&gt;&amp;nbsp;&amp;nbsp;Description="Content Type for Customer related documents"&lt;BR&gt;&amp;nbsp;&amp;nbsp;Version="0"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;FieldRefs&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;FieldRef ID="{7c8b4e26-cb9d-405c-84bd-18e76c40433e}" Name="CustomerName" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/FieldRefs&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/ContentType&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;Field ID="{7c8b4e26-cb9d-405c-84bd-18e76c40433e}"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type="Text"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name="CustomerName"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DisplayName="Customer Name"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StaticName="CustomerName"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hidden="FALSE"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Required="FALSE"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sealed="FALSE" /&amp;gt;&lt;BR&gt;&amp;lt;/Elements&amp;gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;B&gt;&lt;U&gt;Feature Definition&lt;/U&gt;&lt;/B&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;Feature&amp;nbsp; Id="{969A3FA2-1357-48f8-9FC8-D40422A462D8}"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Title="Customer Content Type"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Description="Contains Content Types for Customer content"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Version="12.0.0.0"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hidden="FALSE"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Scope="Site"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DefaultResourceFile="core"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns="http://schemas.microsoft.com/sharepoint/"&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ElementManifests&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ElementManifest Location="Customer.xml"/&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ElementManifests&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ActivationDependencies&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;&amp;lt;ActivationDependency FeatureId="&lt;/B&gt;&lt;B&gt; E4160D49-39CC-4a17-B700-03E4129F1350"/&amp;gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/ActivationDependencies&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/Feature&amp;gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Note the ActivationDependency element in the content type Feature that points to Feature ID of the web applications scoped Feature that we created in step 1. This will ensure that content type Feature cannot be activated at a site collection, unless the Web application Feature is activated for the web application.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9666334" width="1" height="1"&gt;</content><author><name>arbindoc</name><uri>http://blogs.msdn.com/members/arbindoc.aspx</uri></author><category term="Sharepoint" scheme="http://blogs.msdn.com/arbindo/archive/tags/Sharepoint/default.aspx" /><category term="ContentType" scheme="http://blogs.msdn.com/arbindo/archive/tags/ContentType/default.aspx" /></entry><entry><title>MOSS Visual Configuration - Part 1 (Search)</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/arbindo/archive/2008/05/29/moss-visual-configuration-part-1-search.aspx" /><id>http://blogs.msdn.com/arbindo/archive/2008/05/29/moss-visual-configuration-part-1-search.aspx</id><published>2008-05-30T00:54:00Z</published><updated>2008-05-30T00:54:00Z</updated><content type="html">&lt;P&gt;One of the reasons for Microsoft Office Sharepoint Server 2007's popularity and &lt;A href="http://www.cmswire.com/cms/enterprise-cms/sharepoints-no-slouch-earns-microsoft-1-billion-002263.php" target=_blank mce_href="http://www.cmswire.com/cms/enterprise-cms/sharepoints-no-slouch-earns-microsoft-1-billion-002263.php"&gt;&lt;FONT color=#669966&gt;rapid adoption&lt;/FONT&gt;&lt;/A&gt; is the fact that MOSS is a platform that provides various services from ECM, Portal, Collaboration to Search and Personalization. MOSS being a platform provides several extensibility opportunities across services - this is obvious from availability of numerous tools and templates in &lt;A href="http://www.codeplex.com/Project/ProjectDirectory.aspx?TagName=Sharepoint" target=_blank mce_href="http://www.codeplex.com/Project/ProjectDirectory.aspx?TagName=Sharepoint"&gt;&lt;FONT color=#669966&gt;codeplex&lt;/FONT&gt;&lt;/A&gt;.&amp;nbsp;As MOSS is designed to scale to thousands of users and gigabytes of data, the architecture is designed in such a way that logical components such as SSP, Web Applications, Site Collections, Sites and Libraries can be spread across multiple physical servers and databases.&lt;/P&gt;
&lt;P&gt;Challenge that arises from such a vast platform is understanding various points of configuration. Because logical components are modeled to be hierarchical; for e.g. SSP is mapped to multiple Web Applications, Web Application has multiple Site Collections, Site Collection has multiple Sites and a Site has multiple libraries; configuration elements are spread across logical components. Moreover, most of the configuration elements, for instance -&amp;nbsp;user security, content types, information management policies,&amp;nbsp;etc.,&amp;nbsp;are inherited within hierarchy. Though documentation and knowledge base for MOSS is pretty strong -&amp;nbsp;with several &lt;A href="http://technet.microsoft.com/en-us/library/cc262733(TechNet.10).aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc262733(TechNet.10).aspx"&gt;&lt;FONT color=#669966&gt;white papers&lt;/FONT&gt;&lt;/A&gt; and guides from Microsoft to several &lt;A href="http://technet.microsoft.com/en-us/office/sharepointserver/cc510318.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/office/sharepointserver/cc510318.aspx"&gt;&lt;FONT color=#669966&gt;bloggers&lt;/FONT&gt;&lt;/A&gt; contributing periodically to the community - it takes a while to figure out where a particular configuration needs to be changed and whether it would affect other logical components. &lt;/P&gt;
&lt;P&gt;This is my first attempt to simplify the wealth of configuration elements within MOSS by presenting a visual display of configuration element by MOSS Service. In this blog post, I have included MOSS Visual Configuration for Search. Currently this is a picture that shows various Search related configuration within SSP, Site Collections, Sites and Libraries.&amp;nbsp;It helps you identify&amp;nbsp;a logical component where you could define a particular configuration. For instance, Search Visibility can be defined in Site Collections as well as Sites.&amp;nbsp;Configuration elements are either placed in Green box or a Maroon box (I know the colors are not exactly green and maroon, but close, please accept them as is :)). Green box configuration represents elements that&amp;nbsp;can be defined or configured, whereas Maroon box represents configuration that are inherited from parent logical components and are available&amp;nbsp;only for view.&amp;nbsp;Please note that configuration currently is limited to logical components and does not cover physical layer components such as query servers, index servers, Ifilters and protocol handlers. &lt;/P&gt;
&lt;P&gt;I am planning to cover most (if not every) MOSS service in subsequent post. So would like to hear from you if this is something useful. Also send me any feedback that you may have.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;EM&gt;Click on the link for larger image.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="" title="MOSS Visual Config Search" href="http://blogs.msdn.com/photos/arbindo/images/8560372/original.aspx" target=_blank mce_href="http://blogs.msdn.com/photos/arbindo/images/8560372/original.aspx"&gt;&lt;IMG style="WIDTH: 314px; HEIGHT: 579px" src="http://blogs.msdn.com/photos/arbindo/images/8560372/original.aspx" width=500 height=100 mce_src="http://blogs.msdn.com/photos/arbindo/images/8560372/original.aspx"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;Arbindo&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8560358" width="1" height="1"&gt;</content><author><name>arbindoc</name><uri>http://blogs.msdn.com/members/arbindoc.aspx</uri></author><category term="Search" scheme="http://blogs.msdn.com/arbindo/archive/tags/Search/default.aspx" /><category term="Sharepoint" scheme="http://blogs.msdn.com/arbindo/archive/tags/Sharepoint/default.aspx" /><category term="Configuration" scheme="http://blogs.msdn.com/arbindo/archive/tags/Configuration/default.aspx" /></entry><entry><title>Digital Media Management solution on Sharepoint 2007</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/arbindo/archive/2008/05/02/digital-media-management-solution-on-sharepoint-2007.aspx" /><id>http://blogs.msdn.com/arbindo/archive/2008/05/02/digital-media-management-solution-on-sharepoint-2007.aspx</id><published>2008-05-02T07:10:00Z</published><updated>2008-05-02T07:10:00Z</updated><content type="html">&lt;P&gt;Couple of days back I watched demonstration of the next version of Microsoft Interactive Media Manager (IMM) and&amp;nbsp;felt it&amp;nbsp;was brilliant integration&amp;nbsp;of Sharepoint, Silverlight and AJAX&amp;nbsp; to create a rich digital asset management solution.&lt;/P&gt;
&lt;P&gt;Some of the features of IMM such as Media repository, workflow and search are good, but not ground breaking as they are out of box capabilities for any content management within Sharepoint 2007. What really caught my attention was tight integration of Silverlight 2 to play back video files and ability to comment per frame or range of frame.&lt;/P&gt;
&lt;P&gt;Lets walkthrough a scenario here for better understanding: A user in a media company uploads a video file to IMM for publishing. As soon a file is uploaded, parallel approval workflow kicks off that sends review notifications to multiple approvers. Until this point we are within&amp;nbsp;Sharepoint capabilties. Now the approver plays the video, which is played using Silverlight video playback - no downloading of any file on local computer. Fun begins when approver wants to comment on certain section(s) of the video. To do this, approver selects the frame on Silverlight video playback and enters her comment. Similar approach is taken by all the approvers. When the user who initiated the approval checks the video he sent for approval, she could see all the comments sent by approvers and by clicking on a comment, she could play back the frame for which the approver had commented. Note that&amp;nbsp;all these activities are performed only within&amp;nbsp;browser. No client side tool installation and no download of media files. Since we are using Silverlight, solution is supported in MAC as well as Windows.&lt;/P&gt;
&lt;P&gt;Although the solution is built on Sharpeoint 2007, metadata and media files are stored outside Sharepoint 2007 repository. This is due to performance and other architectural requirements which I do not intend to cover.&lt;/P&gt;
&lt;P&gt;Check out the &lt;A class="" title=demonstration href="http://channel9.msdn.com/ShowPost.aspx?PostID=393711" target=_blank mce_href="http://channel9.msdn.com/ShowPost.aspx?PostID=393711"&gt;demonstation&lt;/A&gt;&amp;nbsp;on Channel 9. Here&amp;nbsp;is&amp;nbsp;a screenshot of IMM&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;IMG style="WIDTH: 689px; HEIGHT: 472px" title="MOSS IMM" alt="MOSS IMM" align=absBottom src="http://blogs.msdn.com/photos/arbindo/images/8448900/original.aspx" width=689 height=472 mce_src="http://blogs.msdn.com/photos/arbindo/images/8448900/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;Arbindo&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8448886" width="1" height="1"&gt;</content><author><name>arbindoc</name><uri>http://blogs.msdn.com/members/arbindoc.aspx</uri></author></entry><entry><title>Picture is worth 1000 words</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/arbindo/archive/2008/04/07/picture-is-worth-1000-words.aspx" /><id>http://blogs.msdn.com/arbindo/archive/2008/04/07/picture-is-worth-1000-words.aspx</id><published>2008-04-07T17:14:00Z</published><updated>2008-04-07T17:14:00Z</updated><content type="html">&lt;P&gt;IDV Solutions' Visual Fusion suite for MOSS brings life to content within MOSS. The tool combines content within MOSS with context of location and time and delivers rich visual insight into the content. Check out their &lt;A class="" title="Wonders of the world demo" href="http://wondersoftheworld.idvsolutions.com/default.aspx" target=_blank mce_href="http://wondersoftheworld.idvsolutions.com/default.aspx"&gt;Wonders of the world demo&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Microsoft is also hosting a &lt;A class="" title=webcasr href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373601&amp;amp;Culture=en-US" target=_blank mce_href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032373601&amp;amp;Culture=en-US"&gt;webcast&lt;/A&gt; to demonstrate the integration of the tool with MOSS.&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;Arbindo&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8365459" width="1" height="1"&gt;</content><author><name>arbindoc</name><uri>http://blogs.msdn.com/members/arbindoc.aspx</uri></author><category term="Sharepoint Visual" scheme="http://blogs.msdn.com/arbindo/archive/tags/Sharepoint+Visual/default.aspx" /></entry><entry><title>Customizing SharePoint 2007 Search Result for Structured Content</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/arbindo/archive/2008/04/04/Customizing-SharePoint-2007-Search-Result-for-Structured-Content.aspx" /><id>http://blogs.msdn.com/arbindo/archive/2008/04/04/Customizing-SharePoint-2007-Search-Result-for-Structured-Content.aspx</id><published>2008-04-04T21:39:00Z</published><updated>2008-04-04T21:39:00Z</updated><content type="html">&lt;P&gt;The out of the box Search Core Result web part displays search result in a format that is best suited for unstructured content. With results laid out vertically highlighting content that matches the search criteria, it provides end users to quickly skimp through the result set. Though this format is best suited in scenario where the search result contains unstructured data from various content sources -&amp;nbsp;SharePoint, File System, Web, and LOB -&amp;nbsp;it doesn't do justice when users need to search only structured content. &lt;/P&gt;
&lt;P&gt;While databases such as SQL Server is great for transactional structured data, SharePoint excels in collaborative structured as well as unstructured data. Before we go any further, for the purpose of this discussion, structured data is one that is stored in row and column format. It's called structured because column provides specific meaning / context&amp;nbsp;to the data. Whereas, unstructured content&amp;nbsp;is not represented by row and column. For example, content in Word document or a PDF document. In SharePoint you could bring structured data&amp;nbsp;and unstructured content together in either a List, which allows user to capture metadata along with attachments; or a document library, which allows user to maintain documents along with metadata. This combination of metadata and documents is what brings structured data and unstructured content together in SharePoint. This post is not about structured and unstructured content, but wanted to provide a context on need for displaying search result in tabulat format.&lt;/P&gt;
&lt;P&gt;More often than not, enterprises would use some form of List to manage content specific to a purpose (for e.g. knowledge repository). &lt;A href="http://go.microsoft.com/fwlink/?LinkId=101604&amp;amp;clcid=0x409" target=_blank mce_href="http://go.microsoft.com/fwlink/?LinkId=101604&amp;amp;clcid=0x409"&gt;&lt;FONT color=#669966&gt;Metadata management&lt;/FONT&gt;&lt;/A&gt; is best achieved by using Site Columns and Site Content Types. Based on my experience when user searches within a list, they would like to see results laid out in tabular format, arranged in rows and columns, rather than the out of the box search result format. There are many &lt;A href="http://blogs.msdn.com/powlo/archive/2007/02/25/displaying-custom-data-through-sharepoint-lists-using-spgridview-and-spmenufield.aspx" target=_blank mce_href="http://blogs.msdn.com/powlo/archive/2007/02/25/displaying-custom-data-through-sharepoint-lists-using-spgridview-and-spmenufield.aspx"&gt;&lt;FONT color=#669966&gt;good blog posts&lt;/FONT&gt;&lt;/A&gt; that explains usage of SPGrid and some form of coding to display search result in form of DataGrid. While SPGrid provides rich features such as filtering and context menu, it also requires effort for coding, testing and deployment. If your objective is to just display the results in tabular format with metadata as columns and results arranged in rows, then you could get away by simply changing the Search Core Result XSLT. &lt;/P&gt;
&lt;P&gt;Lets consider we have a knowledge repository in SharePoint. This repository is in form of List that is mapped to a &lt;A href="http://office.microsoft.com/en-us/sharepointserver/HA100997781033.aspx" target=_blank mce_href="http://office.microsoft.com/en-us/sharepointserver/HA100997781033.aspx"&gt;&lt;FONT color=#669966&gt;Site Content Type&lt;/FONT&gt;&lt;/A&gt; named KnowledgeBase. KnowledgeBase has 4 site columns: Title, Knowledge Author, Group and Summary. One of the items in this repository is title MOSS Global deployment, with "Knowledge Author" as "John Doe", Group as "Manufacturing" and some text in the Summary column. Without any kind of XSLT customization, when user searches on this list for "MOSS Global", they will see result in format below&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 1165px; HEIGHT: 231px" title="Sharepoint OOB Search Result" border=1 alt="Sharepoint OOB Search Result" src="http://blogs.msdn.com/photos/arbindo/images/8357678/original.aspx" width=1165 height=231 mce_src="http://blogs.msdn.com/photos/arbindo/images/8357678/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;After we customize the search result XSLT the result format will look like this:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 1163px; HEIGHT: 222px" title="Customized Search Result in Tabular format" border=1 alt="Customized Search Result in Tabular format" src="http://blogs.msdn.com/photos/arbindo/images/8357712/original.aspx" width=1163 height=222 mce_src="http://blogs.msdn.com/photos/arbindo/images/8357712/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Note that the Title is hyperlink pointing to the url of the content. Since we are using the same web part, all other web parts such as Search Actions, Search Summary and Search Paging will work as usual without any change. What we have done is simply changed the XSLT.&lt;/P&gt;
&lt;P&gt;Before we change the XSLT, we will need to define the metadata as &lt;A href="http://technet.microsoft.com/en-us/library/cc262933.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc262933.aspx"&gt;&lt;FONT color=#669966&gt;managed properties&lt;/FONT&gt;&lt;/A&gt;. We will create following managed property:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;KAuthor:&lt;/STRONG&gt; Mapped to Knowledge Author column 
&lt;LI&gt;&lt;STRONG&gt;KSummary&lt;/STRONG&gt;: Mapped to Summary column 
&lt;LI&gt;&lt;STRONG&gt;KGroup:&lt;/STRONG&gt; Mapped to Group column &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;We don't need to define Title and Last Modified as they are already defined in SharePoint.&lt;/P&gt;
&lt;P&gt;In order to include newly created managed properties in XSLT, they need to be included in the "Selected Columns" property of the Search Core Result Web Part. &lt;/P&gt;
&lt;P&gt;Modify the Search Core Result Web Part by clicking on the "Edit" link. Expand the "Results / Query Options" section. Include KAuthor, KSummary and KGroup in the "Selected Columns" as shown below.&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;lt;root xmlns:xsi="&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;A href="http://www.w3.org/2001/XMLSchema-instance" mce_href="http://www.w3.org/2001/XMLSchema-instance" ?="?"&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;http://www.w3.org/2001/XMLSchema-instance"&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;gt; &lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;lt;Columns&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;lt;Column Name="KGroup"/&amp;gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;lt;Column Name="KAuthor"/&amp;gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;lt;Column Name="KSummary"/&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Column Name="WorkId"/&amp;gt;&amp;lt;Column Name="Rank"/&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Column Name="Title"/&amp;gt;&amp;lt;Column Name="Author"/&amp;gt;&amp;lt;Column Name="Size"/&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;lt;Column Name="Path"/&amp;gt;&amp;lt;Column Name="Description"/&amp;gt;&amp;lt;Column Name="Write"/&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Column Name="SiteName"/&amp;gt;&amp;lt;Column Name="CollapsingStatus"/&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;lt;Column Name="HitHighlightedSummary"/&amp;gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;lt;Column Name="HitHighlightedProperties"/&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Column Name="ContentClass"/&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Column Name="IsDocument"/&amp;gt;&amp;lt;Column Name="PictureThumbnailURL"/&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;nbsp; &amp;lt;/Columns&amp;gt;&amp;nbsp; &lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;lt;/root&amp;gt; &lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;It is important to understand the XML returned by the Sharepoint Search engine. The XML returned has all the columns defined in "Selected Columns" property of the web part. The XML looks like this:&lt;/P&gt;
&lt;DIV&gt;
&lt;P&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;lt;All_Results&amp;gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Result&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;kgroup&amp;gt;Manufacturing&amp;lt;/kgroup&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;kauthor&amp;gt;John Doe&amp;lt;/kauthor&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ksummary&amp;gt;This knowledge article outlines challanges and best practice recommendation on implementation of Sharepoint on global platform.&amp;lt;/ksummary&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;workid&amp;gt;1123&amp;lt;/workid&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;rank&amp;gt;497&amp;lt;/rank&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;MOSS Global Deployment&amp;lt;/title&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;author&amp;gt;System Account&amp;lt;/author&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;size&amp;gt;0&amp;lt;/size&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;url&amp;gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;A href="http://myportal-18e67cd/sites/Knowledge/Lists/KnowledgeArticles/DispForm.aspx?ID=1" mce_href="http://myportal-18e67cd/sites/Knowledge/Lists/KnowledgeArticles/DispForm.aspx?ID=1"&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;http://myportal-18e67cd/sites/Knowledge/Lists/KnowledgeArticles/DispForm.aspx?ID=1&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;lt;/url&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;urlEncoded&amp;gt;http%3A%2F%2Fmyportal%2D18e67cd%2Fsites%2FKnowledge%2FLists%2FKnowledgeArticles%2FDispForm%2Easpx%3FID%3D1&amp;lt;/urlEncoded&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;&amp;lt;/description&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;write&amp;gt;4/1/2008&amp;lt;/write&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;sitename&amp;gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;A href="http://myportal-18e67cd/sites/knowledge" mce_href="http://myportal-18e67cd/sites/knowledge"&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;http://myportal-18e67cd/sites/knowledge&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;lt;/sitename&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;collapsingstatus&amp;gt;0&amp;lt;/collapsingstatus&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;hithighlightedsummary&amp;gt; &amp;lt;ddd /&amp;gt;&amp;nbsp; of Sharepoint on &amp;lt;c1&amp;gt;global&amp;lt;/c1&amp;gt; platform. &amp;lt;ddd /&amp;gt; &amp;lt;c0&amp;gt;MOSS&amp;lt;/c0&amp;gt; &amp;lt;c1&amp;gt;Global&amp;lt;/c1&amp;gt; Deployment&amp;nbsp; &amp;lt;ddd /&amp;gt; &amp;lt;c0&amp;gt;MOSS&amp;lt;/c0&amp;gt; &amp;lt;c1&amp;gt;Global&amp;lt;/c1&amp;gt; Deployment &amp;lt;/hithighlightedsummary&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;hithighlightedproperties&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;HHTitle&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;c0&amp;gt;MOSS&amp;lt;/c0&amp;gt; &amp;lt;c1&amp;gt;Global&amp;lt;/c1&amp;gt; Deployment&amp;lt;/HHTitle&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;HHUrl&amp;gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;A href="http://myportal-18e67cd/sites/Knowledge/Lists/KnowledgeArticles/DispForm.aspx?ID=1" mce_href="http://myportal-18e67cd/sites/Knowledge/Lists/KnowledgeArticles/DispForm.aspx?ID=1"&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;http://myportal-18e67cd/sites/Knowledge/Lists/KnowledgeArticles/DispForm.aspx?ID=1&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#400040&gt;&lt;STRONG&gt;&lt;EM&gt;&amp;lt;/HHUrl&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/hithighlightedproperties&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;contentclass&amp;gt;STS_ListItem_GenericList&amp;lt;/contentclass&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;isdocument&amp;gt;0&amp;lt;/isdocument&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;picturethumbnailurl&amp;gt;&amp;lt;/picturethumbnailurl&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;imageurl imageurldescription="Result of type: document"&amp;gt;/_layouts/images/STS_ListItem16.gif&amp;lt;/imageurl&amp;gt;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Result&amp;gt; &lt;BR&gt;&amp;lt;/All_Results&amp;gt;&lt;/EM&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;Now that we have done the ground work, next we modify the Search Core Result XSLT. Following link has the XSLT to display results in tabular format.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://cid-ed3f2f28de595784.skydrive.live.com/self.aspx/Public/SearchResult.xslt" target=_blank mce_href="http://cid-ed3f2f28de595784.skydrive.live.com/self.aspx/Public/SearchResult.xslt"&gt;&lt;FONT color=#669966&gt;Modified Search Core Result XSLT&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Open the XSLT in XSLT editor such as Visual Studio.NET 2008. Line 126 to Line 133 contains XSLT processing for displaying the column header. You could add your own columns here. Line 149 to Line 168 contains processing for displaying search result in table. You could replace managed properties shown here with your own managed properties. You could include any of the other XML elements from XML returned from Search.&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;Arbindo&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8357865" width="1" height="1"&gt;</content><author><name>arbindoc</name><uri>http://blogs.msdn.com/members/arbindoc.aspx</uri></author><category term="XSLT" scheme="http://blogs.msdn.com/arbindo/archive/tags/XSLT/default.aspx" /><category term="Search" scheme="http://blogs.msdn.com/arbindo/archive/tags/Search/default.aspx" /><category term="Sharepoint" scheme="http://blogs.msdn.com/arbindo/archive/tags/Sharepoint/default.aspx" /></entry></feed>