<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CE8ASXkzeSp7ImA9WhRUFks.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449</id><updated>2012-01-27T12:14:08.781+01:00</updated><category term="clickonce" /><category term="control" /><category term="lan" /><category term="community" /><category term="disk" /><category term="wspbuilder" /><category term="upgrade" /><category term="array" /><category term="windows 7" /><category term="c#" /><category term="stackoverflow" /><category term="pointers" /><category term="css" /><category term="configuration" /><category term="latitude" /><category term="player" /><category term="resources" /><category term="license" /><category term=".net" /><category term="mmf" /><category term="exchange" /><category term="office 2010" /><category term="voting" /><category term="linq" /><category term="sticky keys" /><category term="enterprise search" /><category term="ssd" /><category term="rpc" /><category term="vmware" /><category term="security" /><category term="core" /><category term="azure" /><category term="fast for sharepoint" /><category term="cloud" /><category term="icy box" /><category term="richtextbox" /><category term="ie8" /><category term="visual studio" /><category term="claims" /><category term="mapi" /><category term="g4l" /><category term="dojo" /><category term="thread safe" /><category term="citrix" /><category term="certificate" /><category term="design" /><category term="disable" /><category term="e6400" /><category term="exif" /><category term="google" /><category term="webpart" /><category term="packaging" /><category term="javascript" /><category term="list" /><category term="64bit" /><category term="fast" /><category term="acpi" /><category term="serialization" /><category term="conference" /><category term="http" /><category term="daemon tools" /><category term="winform" /><category term="mvp" /><category term="shrink" /><category term="sp2010" /><category term="sharepoint" /><category term=".net 4.0" /><category term="comparison" /><category term="issues" /><category term="unsafe" /><category term="course" /><category term="windows" /><category term="managed" /><category term="code" /><category term="file" /><category term="wave" /><category term="naming" /><category term="deploy" /><category term="ndepend" /><category term="wcf" /><category term="fs4sp" /><category term="boot" /><category term="microsoft partner" /><category term="ajax" /><category term="howto" /><category term="convert" /><category term="optimize" /><category term="xslt" /><category term="wsp" /><category term="ie" /><category term="resx" /><category term="jquery" /><category term="outlook" /><category term="tuple" /><category term="transfer" /><category term="clone" /><category term="office 2007" /><category term="data structures" /><category term="wisdom" /><category term="sql" /><category term="wpf" /><category term="dictionary" /><category term="search" /><category term="serializer" /><category term="32bit" /><category term="esx" /><category term="readability" /><category term="fail" /><category term="clipboard" /><category term="secure store" /><category term="zip" /><category term="fast forward" /><category term="discovery" /><title>Tech and me</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://techmikael.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>93</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/TechAndMe" /><feedburner:info uri="techandme" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>59.822732</geo:lat><geo:long>10.722656</geo:long><entry gd:etag="W/&quot;CE8ASXkzfip7ImA9WhRUFks.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-2801283368225464509</id><published>2012-01-27T12:13:00.000+01:00</published><updated>2012-01-27T12:14:08.786+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-27T12:14:08.786+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="howto" /><category scheme="http://www.blogger.com/atom/ns#" term="search" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><title>How to do Visual Best Bets for built-in SharePoint Search</title><content type="html">&lt;a href="http://nuggets.comperiosearch.com/2012/01/nothing-but-best-bets/"&gt;Marcus Johansson did a post about the use of Best Bets&lt;/a&gt; this morning which inspired me to write this post. Read his post for more thoughts around the use of best bets.&lt;br /&gt;
&lt;br /&gt;
Visual Best Bets is a feature of FAST Search for SharePoint which lets you point to a file with html content to be displayed above your search results. For example an image, silverlight or flash content can be used to graphically enhance what is linked to the keyword term. The Visual Web Part uses an iframe to accomplish this and loads up your content inside the iframe. This is useful as you can easily edit the html file at will.&lt;br /&gt;
&lt;br /&gt;
But why go the extra mile for a separate file, or opt in for FS4SP for this feature? The Best Bet web part support the showing of keywords and keyword definitions. Keyword definitions are formatted as html. And a definition with html formatting is in effect a Visual Best Bet. (If you have more than one Visual Best Bet you want to assign to the keyword you would have to add them all to the same html for this to work.)&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
If we examine the Add Keyword page you can format the text for the definition, but there is no button to allow editing the html directly in the style panel.&lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/-xY6krDLhCZM/TyKE-YLFVFI/AAAAAAAAAQI/BNC7-RqfYZ8/s1600-h/image%25255B18%25255D.png"&gt;&lt;img alt="image" border="0" height="404" src="http://lh4.ggpht.com/-6ieIsz-1TPs/TyKE_BJd26I/AAAAAAAAAQQ/zZ-eoXm2Rt4/image_thumb%25255B19%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="504" /&gt;&lt;/a&gt;&lt;br /&gt;
Will this stop us? No, because we have PowerShell! In a SharePoint management shell get hold of the added keyword “fs4sp” and look at the properties:&lt;br /&gt;
&lt;pre class="brush: ps;"&gt;PS C:\Users\svc_spadmin&amp;gt; $keyword = Get-SPEnterpriseSearchQueryKeyword -Site http://test "fs4sp"
PS C:\Users\svc_spadmin&amp;gt; $keyword  | Format-List


Term       : fs4sp
Definition :
Contact    :
StartDate  : 26.01.2012 23:00:00
EndDate    : 31.12.9999 23:59:59
ReviewDate : 31.12.9999 23:59:59
BestBets   : {}
Synonyms   : {}
ExpiryDate : 31.12.9999 23:59:59&lt;/pre&gt;
As you can see there is a property called “Definition”. This parameter holds html, but is empty as I didn’t add a definition via the UI.&lt;br /&gt;
&lt;br /&gt;
For my Visual Best Bet I will add the following html to my $keyword object and update it:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: ps;"&gt;PS C:\Users\svc_spadmin&amp;gt; $keyword.Definition = '&amp;lt;div&amp;gt;&amp;lt;img src="http://test/PublishingImages/FAST-search-server
-2010.png" style="float:left"&amp;gt;&amp;lt;b&amp;gt;Working with Microsoftr FAST Search Server 2010 for SharePointr, 1st Edition&amp;lt;
/b&amp;gt;&amp;lt;i&amp;gt;By Mikael Svenson, Marcus Johansson, Robert Piddocke&amp;lt;/i&amp;gt;Deliver the tools clients need to navigate large
 stores of information on your Microsoftr SharePointr implementation-using Microsoft FAST Search Server 2010 f
or SharePoint.&amp;lt;br&amp;gt;Format: Print&amp;lt;br&amp;gt;Publish Date: March 2012&amp;lt;/div&amp;gt;'
PS C:\Users\svc_spadmin&amp;gt; $keyword.Update()&lt;/pre&gt;
Next edit the Search Best Bet web part and make sure “Display definition” is checked and that “Display keyword” is unchecked.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://lh3.ggpht.com/-4Iv4i-wBSLw/TyKFAMKURVI/AAAAAAAAAQY/iYd654lDY5Q/s1600-h/image%25255B16%25255D.png"&gt;&lt;img alt="image" border="0" height="449" src="http://lh4.ggpht.com/-uAbHATenD9k/TyKFBMuJp2I/AAAAAAAAAQg/oBu1aNQamOk/image_thumb%25255B13%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="235" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Do a search for “fs4p” and the result looks like this:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://lh4.ggpht.com/-ejm4sVauovw/TyKFCOZpguI/AAAAAAAAAQo/rd74JohvxoY/s1600-h/image%25255B17%25255D.png"&gt;&lt;img alt="image" border="0" height="192" src="http://lh3.ggpht.com/-s2IUEQ6_tpk/TyKFCm5aYtI/AAAAAAAAAQs/lQ01VWjE72U/image_thumb%25255B18%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="503" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
If you want to use an iframe pointing to a separate file you can add html like:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: xml;"&gt;&amp;lt;IFRAME title="Search Visual Best Bet" height="150" src="http://fs4spbook.com/" frameBorder="0px" scrolling="no"&amp;gt;&amp;lt;/IFRAME&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
where the src tag points to your file to mimic the behavior&amp;nbsp; of the Visual Best Bets web part.&lt;br /&gt;
&lt;br /&gt;
All part of a days work using configuration!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-2801283368225464509?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xBNADIg0GZZTAft0dyqd6OFjmTg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xBNADIg0GZZTAft0dyqd6OFjmTg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xBNADIg0GZZTAft0dyqd6OFjmTg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xBNADIg0GZZTAft0dyqd6OFjmTg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/yO23us__U3c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/2801283368225464509/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2012/01/how-to-do-visual-best-bets-for-built-in.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/2801283368225464509?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/2801283368225464509?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/yO23us__U3c/how-to-do-visual-best-bets-for-built-in.html" title="How to do Visual Best Bets for built-in SharePoint Search" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-6ieIsz-1TPs/TyKE_BJd26I/AAAAAAAAAQQ/zZ-eoXm2Rt4/s72-c/image_thumb%25255B19%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2012/01/how-to-do-visual-best-bets-for-built-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQMQnk8fSp7ImA9WhRQGEw.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-7923294425899983222</id><published>2011-12-13T23:06:00.000+01:00</published><updated>2011-12-13T23:13:03.775+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-13T23:13:03.775+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="howto" /><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="code" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>Returning Best Bets and Visual Best Bets with KeywordQuery and FAST Search for SharePoint</title><content type="html">When using the Search Center the Best Bets or Visual Best Bets functionality works like a charm, but I have not been able to get it to work using the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.server.search.query.keywordquery.aspx" target="_blank"&gt;KeywordQuery&lt;/a&gt; class in SharePoint.&lt;br /&gt;
&lt;br /&gt;
I had done some research previously on the matter after being contacted by Xavier Vanneste who blogged about this (&lt;a href="http://blog.xvanneste.com/Lists/Billets/Post.aspx?ID=82"&gt;http://blog.xvanneste.com/Lists/Billets/Post.aspx?ID=82&lt;/a&gt;), but was not able to figure it out at the time.&lt;br /&gt;
&lt;br /&gt;
I’m currently writing sample code for my upcoming book on FS4SP and I had to figure this out. Time to bring out the tools!&lt;br /&gt;
&lt;br /&gt;
One hour with the Visual Studio Reflector plugin and setting break-points internally in the SSA I finally figured it out. And in a way it was obvious.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
All keyword settings with FAST requires a Search Setting Group and you will have one group for each site collection in your SharePoint farm. The ID of the search setting group is the GUID of the site collection. And this ID is the solution.&lt;br /&gt;
&lt;br /&gt;
KeywordQuery has a property named “&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.server.search.query.keywordquery.usercontextgroupid.aspx" target="_blank"&gt;UserContextGroupID&lt;/a&gt;”, and MSDN states:&lt;br /&gt;
&lt;blockquote&gt;
Gets or sets the identifier used to group keywords used for matching best bets and visual best bets. This property specifies an identifier used to group keywords used for matching best bets and visual best bets.&lt;/blockquote&gt;
By assigning the UserContextGroupID property and requesting to get back SpecialTermResults it is now working like a charm.&lt;br /&gt;
&lt;br /&gt;
Here’s a small sample which will return a Visual Best Bet assigned to the term “FAST Search for SharePoint”.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;var searchProxy = (SearchServiceApplicationProxy)SearchServiceApplicationProxy.GetProxy(SPServiceContext.Current);
KeywordQuery kq = new KeywordQuery(searchProxy);
kq.QueryText = "FAST Search for SharePoint";
kq.ResultsProvider = SearchProvider.FASTSearch;

// specify best bets/visual best bets
kq.ResultTypes = ResultType.SpecialTermResults;
// specify the Search Settings Group ID
kq.UserContextGroupID = SPContext.Current.Site.ID.ToString();

ResultTableCollection resultTableCollection = kq.Execute();
ResultTable visualBestBetsTable = resultTableCollection[ResultType.VisualBestBetsResults];
foreach (DataRow row in visualBestBetsTable.Table.Rows)
{
    string name = (string)row["Name"];
    string uri = (string)row["Uri"];
    string description = (string)row["Description"];
    string keyword = (string)row["Keyword"];
    string teaser = (string)row["Teaser"];
    string contentType = (string)row["TeaserContentType"];
}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-7923294425899983222?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_OAtueAXg25KPjobBpMkF1RM5vY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_OAtueAXg25KPjobBpMkF1RM5vY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_OAtueAXg25KPjobBpMkF1RM5vY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_OAtueAXg25KPjobBpMkF1RM5vY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/00BkDjfQkEo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/7923294425899983222/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/12/returning-best-bets-and-visual-best.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/7923294425899983222?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/7923294425899983222?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/00BkDjfQkEo/returning-best-bets-and-visual-best.html" title="Returning Best Bets and Visual Best Bets with KeywordQuery and FAST Search for SharePoint" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/12/returning-best-bets-and-visual-best.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUMRns-fCp7ImA9WhRXE08.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-2292277825842221082</id><published>2011-12-10T21:07:00.000+01:00</published><updated>2011-12-19T21:41:27.554+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-19T21:41:27.554+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="howto" /><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>How to prevent an item from being indexed with FAST for SharePoint</title><content type="html">&lt;h4&gt;






&lt;img align="right" border="0" height="161" src="http://1.bp.blogspot.com/_UZImdYAiry8/ShwSyCn25uI/AAAAAAAARHM/dtXeQ1Y7tyI/s400/parental_advisory_logo.jpg" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; float: right; padding-left: 0px; padding-right: 0px; padding-top: 0px;" width="240" /&gt;Yes, it can be done!&lt;/h4&gt;
It’s Saturday, my kid has gone to sleep, and I finally have time to tell you guys the good news. Preventing an item from being index, or to paraphrase, to drop a document in the document processing pipeline is indeed possible!&lt;br /&gt;
&lt;br /&gt;
You can already prevent items from being indexed by limiting SharePoint lists and libraries from being crawled with library settings and you can use crawl rules to exclude certain url patterns. But what I am talking about is preventing an item from being indexed based business rules in your organization and looking at the meta data of the item or inside the text of a file.&lt;br /&gt;
&lt;br /&gt;
There are many scenarios for not wanting an item searchable.&amp;nbsp;You might want to prevent indexing items in your organization which contains the super secret codename “wobba”, or items of a certain ContentType. When indexing file shares you don't have much meta data to go on at all for&amp;nbsp;excluding&amp;nbsp;items, so creating your own module with the proper rules might be the only way to go.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Up until this post, this was not easily doable with FAST for SharePoint. With built-in SharePoint Search it’s still impossible (unless you create a custom crawler).&lt;br /&gt;
There has been at least a couple of threads about this at the FS4SP TechNet forum&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://social.technet.microsoft.com/Forums/en-US/fastsharepoint/thread/835bb78e-3bdf-4ed3-8ac1-aa3ce389fdd5" target="_blank"&gt;How can we drop a document from indexing in FAST Search for SharePoint 2010?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://social.technet.microsoft.com/Forums/en-US/fastsharepoint/thread/a477e7ce-833e-4b96-9a2b-e184f41f888f" target="_blank"&gt;Drop the document in pipeline&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
and we have long time concluded that this is not an easy task, and cannot be done in a supported manner. &lt;em&gt;(Supported meaning not editing config files which the documentation on TechNet tells us not to touch.)&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
I had sort of thought about how to do this earlier, but I didn’t figure it out before reading Leonardo Souza’s blog post the other day about: &lt;a href="http://searchunleashed.wordpress.com/2011/12/08/how-remove-duplicate-results-works-in-fast-search-for-sharepoint/" target="_blank"&gt;How "Remove Duplicate Results" works in FAST Search for SharePoint&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Leo talks about a property called “documentsignaturecontribution” which can be used to append data to the document signature checksum in the FS4SP content processing pipeline. But in order to assign data to this property you have to create a managed property by that&amp;nbsp; exact name, and output your custom data to a crawled property of your choosing which is mapped to the managed property.&lt;br /&gt;
&lt;br /&gt;
The reason why you have to work with a managed property is because the document signature stage appears after the stage which maps crawled properties to managed properties, and all stages below the mapper stage works on managed properties. This find by Leo is just so cool, and there is no documentation on this anywhere as far as I’ve seen.&lt;br /&gt;
&lt;br /&gt;
So, over to our problem. Which stage runs just before the document signature stage and comes to our aid?&lt;br /&gt;
&lt;h4 align="center"&gt;






The “Offensive Content Filter” stage&lt;/h4&gt;
&lt;div align="left"&gt;
This stage also has an additional attribute where you can assign data, named “ocfcontribution”. There’s only vague documentation on MSDN on how to &lt;a href="http://msdn.microsoft.com/en-us/library/ff795826.aspx" target="_blank"&gt;assign data to this field&lt;/a&gt;, which refers to using the XMLMapper. Using the XMLMapper means indexing xml documents, and this is a bit limiting.&lt;/div&gt;
&lt;div align="left"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align="left"&gt;
The thing about the offensive content filter is that it will prevent documents from being indexed if they contain a certain about of bad language. If you get embarrassed by such words, then skip reading :)&lt;/div&gt;
&lt;div align="left"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align="left"&gt;
So now we have a stage which can drop items, the rest is to assign enough bad words to “ocfcontribution” to get above the threshold it triggers on.&lt;/div&gt;
&lt;div align="left"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align="left"&gt;
First off enable the Offensive Content Filter by editing C:\FASTSearch\etc\config_data\DocumentProcessor\optionalprocessing.xml&lt;/div&gt;
&lt;div align="left"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align="left"&gt;
Next create a managed property called “ocfcontribution” of type “Text”, and also a crawled property with this name. The guid for the property set is one I have chosen for a test group in my system. Replace it with to suit your own system.&lt;/div&gt;
&lt;pre class="brush: ps;"&gt;$mp = New-FASTSearchMetadataManagedProperty -Name ocfcontribution -Type 1
$cp = New-FASTSearchMetadataCrawledProperty -Name ocfcontribution  -Propset fa585f53-2679-48d9-976d-9ce62e7e
19b7 -VariantType 31
New-FASTSearchMetadataCrawledPropertyMapping -ManagedProperty $mp -CrawledProperty $cp&lt;/pre&gt;
&lt;br /&gt;
In order to test this I have created an xml file named “drop.xml” which I placed in C:\FASTSearch\pipelinemodules with the following contents&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: xml;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;Document&amp;gt;
   &amp;lt;CrawledProperty propertySet="fa585f53-2679-48d9-976d-9ce62e7e19b7" propertyName="ocfcontribution" varType="31"&amp;gt;fuck shit porn cunt cock dick&amp;lt;/CrawledProperty&amp;gt;
&amp;lt;/Document&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
Next I added the following custom extensibility stage to C:\FASTSearch\etc\pipelineextensibility.xml&lt;br /&gt;
&lt;div align="left"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class="brush: xml;" type="syntaxhighlighter"&gt;&amp;lt;Run command="copy C:\FASTSearch\pipelinemodules\drop.xml %(output)s"&amp;gt;
    &amp;lt;Output&amp;gt;
        &amp;lt;CrawledProperty propertySet="fa585f53-2679-48d9-976d-9ce62e7e19b7" varType="31" propertyName="ocfcontribution"/&amp;gt;
    &amp;lt;/Output&amp;gt;
&amp;lt;/Run&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
This stage will for each item assign the contents of drop.xml to “ocfcontribution”, effectively dropping all items, which is ok for test purposes. You would of course create a custom module instead which has your business rules for when an item should be dropped.&lt;br /&gt;
&lt;br /&gt;
&lt;div align="left"&gt;
Next issue “psctrl reset” to reload your config files and use for example “docpush” to index an item, and it will not be indexed, as the output below shows.&lt;/div&gt;
&lt;br /&gt;
&lt;pre class="brush: perl;"&gt;PS C:\temp&amp;gt; docpush -c test sample.txt
[2011-12-10 20:31:02.677] ERROR      test Reported error with http://cohowinery.com/sample.txt: processing:OffensiveConte
ntFilter:ERROR: Processor error status: NotPassing
[2011-12-10 20:31:03.678] INFO       test All add operations completed&lt;/pre&gt;
&lt;br /&gt;
I hope someone will find this trick useful, and it seems you can use English words for to trigger the filter, no matter the language of your items.&lt;br /&gt;
&lt;br /&gt;
PS! If you enable the Offensive Content Filter and have content with explicit language, you could risk some items not being indexed with this method.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-2292277825842221082?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ooyJaRdysN4ZDm5niTpdHU9DIOs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ooyJaRdysN4ZDm5niTpdHU9DIOs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ooyJaRdysN4ZDm5niTpdHU9DIOs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ooyJaRdysN4ZDm5niTpdHU9DIOs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/kR4HNaTeTEY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/2292277825842221082/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/12/how-to-prevent-item-from-being-indexed.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/2292277825842221082?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/2292277825842221082?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/kR4HNaTeTEY/how-to-prevent-item-from-being-indexed.html" title="How to prevent an item from being indexed with FAST for SharePoint" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_UZImdYAiry8/ShwSyCn25uI/AAAAAAAARHM/dtXeQ1Y7tyI/s72-c/parental_advisory_logo.jpg" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/12/how-to-prevent-item-from-being-indexed.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cGSXw5fyp7ImA9WhRRFUw.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-2857705829454380346</id><published>2011-11-28T21:09:00.001+01:00</published><updated>2011-11-28T21:10:28.227+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-28T21:10:28.227+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="howto" /><category scheme="http://www.blogger.com/atom/ns#" term="secure store" /><category scheme="http://www.blogger.com/atom/ns#" term="code" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><category scheme="http://www.blogger.com/atom/ns#" term="claims" /><title>Creating a Secure Store Target application with access for all users</title><content type="html">I am currently working on a &lt;a href="http://www.puzzlepart.com/products/Pages/Did-The-Calendar-is-the-Timesheet.aspx" target="_blank"&gt;SharePoint application&lt;/a&gt; which access users Exchange calendars via web services. In order to access the calendars we need to provide credentials and we use a service account which has access to all calendars.&lt;br /&gt;
&lt;br /&gt;
Instead of storing the logon information of the service account in a list or web.config we want to store this in Secure Store which is ideal for storing credentials (big surprise there). We also want to create the Secure Store target application in code with an installer and not using Central Admin.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
This is all very straight forward. First we get a reference to the Secure Store with the following code&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;SPServiceContext context = SPServiceContext.GetContext(SPServiceApplicationProxyGroup.Default, SPSiteSubscriptionIdentifier.Default);
SecureStoreServiceProxy ssp = new SecureStoreServiceProxy();
ISecureStore iss = ssp.GetSecureStore(context);&lt;/pre&gt;
&lt;br /&gt;
And in order to create the Target Application we use the CreateApplication method of the ISecureStore object.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;void CreateApplication(TargetApplication application, IList&amp;lt;TargetApplicationField&amp;gt; applicationFields, TargetApplicationClaims applicationClaims);&lt;/pre&gt;
&lt;br /&gt;
The issue comes when you want to create the claims going in as the third parameter. In our case we want all users to use the same credentials in the form of all authenticated users and I’ve create a “group” type target application. For “group” type target applications we have to set the administrator and member claims on the TargetApplicationClaims object.&lt;br /&gt;
&lt;br /&gt;
But what should we pass in? If you use the wizard in SharePoint admin to set the credentials, the user picker control will do the conversion for us from whatever user or group we enter. When programming this ourselves it’s a different matter.&lt;br /&gt;
&lt;br /&gt;
My trusty old friend Reflector helped me out and I found the perfect claims provider for my use.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;Microsoft.SharePoint.Administration.Claims.SPAllUserClaimProvider&lt;/pre&gt;
&lt;br /&gt;
This class has a static method named “CreateAuthenticatedUserClaim” which return a claim for all authenticated users.&amp;nbsp; (Try &lt;a href="http://www.google.com/search?q=CreateAuthenticatedUserClaim" target="_blank"&gt;Google&lt;/a&gt; the method name and see how much help you get).&lt;br /&gt;
&lt;br /&gt;
The final code looks something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;TargetApplication app = new TargetApplication("appid", "friendlyname", "admin@email.com", 0, TargetApplicationType.Group, null);
List&amp;lt;TargetApplicationField&amp;gt; fields = &amp;lt;the fields in the target app&amp;gt;;
string administator = "DOMAIN\\adminuser";
var adminWindowsClaim = SPActiveDirectoryClaimProvider.CreateUserClaim(administator);
SecureStoreServiceClaim adminSecureClaim = new SecureStoreServiceClaim(adminWindowsClaim);

SPClaim groupWindowsClaim = SPAllUserClaimProvider.CreateAuthenticatedUserClaim(true);
SecureStoreServiceClaim groupSecureClaim = new SecureStoreServiceClaim(groupWindowsClaim);

TargetApplicationClaims apc = new TargetApplicationClaims(new List&amp;lt;SecureStoreServiceClaim&amp;gt; { adminSecureClaim }, new List&amp;lt;SecureStoreServiceClaim&amp;gt; { groupSecureClaim }, new List&amp;lt;SecureStoreServiceClaim&amp;gt;());
iss.CreateApplication(app, fields, apc);&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-2857705829454380346?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IK3qXLf-WI957H4_R78cRvS9H2M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IK3qXLf-WI957H4_R78cRvS9H2M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IK3qXLf-WI957H4_R78cRvS9H2M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IK3qXLf-WI957H4_R78cRvS9H2M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/UlQzQy5EZzo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/2857705829454380346/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/11/creating-secure-store-target.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/2857705829454380346?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/2857705829454380346?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/UlQzQy5EZzo/creating-secure-store-target.html" title="Creating a Secure Store Target application with access for all users" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/11/creating-secure-store-target.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8MSXo8eSp7ImA9WhRSGEw.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-5871064969851277774</id><published>2011-11-20T20:51:00.000+01:00</published><updated>2011-11-20T20:54:48.471+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-20T20:54:48.471+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="discovery" /><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="fast" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><title>Taking promotions/demotions one step further in FAST Search for SharePoint</title><content type="html">&lt;a href="http://lh3.ggpht.com/-sEaE3EHo2Zg/TslZQTOUX_I/AAAAAAAAAPo/S6ufD5hAz3g/s1600-h/promotions%25255B3%25255D.jpg"&gt;&lt;img align="right" alt="promotions" border="0" height="187" src="http://lh4.ggpht.com/-I44OejmwgNc/TslZQw1H4QI/AAAAAAAAAPs/FrzIYMq9FYg/promotions_thumb%25255B1%25255D.jpg?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; float: right; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="promotions" width="240" /&gt;&lt;/a&gt;&lt;span style="font-family: inherit;"&gt;I am not sure how many times I have read the documentation on promotions and demotions in Microsoft documentation, but I can say it is numerous.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;And yet yesterday I discovered a valuable piece of nugget which I’m sure I will use a lot in the future&lt;big face="" happy=""&gt;.&lt;/big&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;big face="" happy=""&gt;&lt;/big&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;span style="font-family: inherit;"&gt;&lt;big face="" happy=""&gt;&lt;br /&gt;&lt;/big&gt;&lt;/span&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;Up until yesterday this was my complete understanding of promotions and demotions in FAST for SharePoint.&lt;/span&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;br /&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;&lt;strong&gt;1.&lt;/strong&gt;     &lt;br /&gt;You can promote and demote items based on it’s url. Via SharePoint admin UI the boost is absolute by adding 1,000,000 rank points, effectively pushing the item to top of the result list.&lt;/span&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;If using the SharePoint UI you have to add the promotions to a keyword, but when using PowerShell you can make a “global” promotion which affects all search queries.&lt;/span&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;&lt;strong&gt;2.&lt;/strong&gt;     &lt;br /&gt;You can promote and demote sites based on the start of a url. For example promoting “http://site/” via SharePoint admin UI will give all items which has a url starting with “http://site/” 1,000 extra rank points. A soft boost.&lt;/span&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;&lt;strong&gt;3.&lt;/strong&gt;     &lt;br /&gt;Using PowerShell to create promotions and demotions lets you specify the boost value yourself.&lt;/span&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;&lt;strong&gt;4.&lt;/strong&gt;     &lt;br /&gt;Each of the promotions can be associated with a user context in order to target the promotion to specific users, and you can set a start and end date for the promotion.&lt;/span&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;br /&gt;
&lt;h3&gt;






&lt;big face="" happy=""&gt;There is MORE!&lt;/big&gt;&lt;/h3&gt;
&lt;big face="" happy=""&gt;&lt;span style="font-size: small;"&gt;This is all good, but there is more. Doing some PowerShell scripts around promotions I stumbled upon the very little documented function &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.search.extended.administration.keywords.promoteditemcollection.addpromotedexpression.aspx" target="_blank"&gt;AddPromotedExpression&lt;/a&gt;. If you google this function you will get two hits, both on MSDN with the very sparse documentation text&lt;/span&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;em&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;em&gt;&lt;span style="font-size: small;"&gt;“Creates a promoted expression and adds it to the collection.”&lt;/span&gt;&lt;/em&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;span style="font-size: small;"&gt;with the function signature: &lt;/span&gt;&lt;/big&gt;&lt;br /&gt;
&lt;pre&gt;&lt;big face="" happy=""&gt;
&lt;/big&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;big face="" happy=""&gt;&lt;span style="font-size: small;"&gt;PromotedExpression AddPromotedExpression(
    string fqlExpression
)&lt;/span&gt;&lt;/big&gt;&lt;/pre&gt;
&lt;big face="" happy=""&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;span style="font-size: small;"&gt;What this means is we can write an arbitrary FQL expression for promoting or demoting items. Let’s say we want to demote all items which are larger than 3MB and located on a file server. The following fql will match the criteria:&lt;/span&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;br /&gt;
&lt;pre class="brush: ps;"&gt;&lt;big face="" happy=""&gt;&lt;span style="font-size: small;"&gt;and(size:range(int("3145728"),max,from="gt",to="le"),url:starts-with("file://"))&lt;/span&gt;&lt;/big&gt;&lt;/pre&gt;
&lt;big face="" happy=""&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;span style="font-size: small;"&gt;Executing the following lines in a FS4SP PowerShell will add the demotion:&lt;/span&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;br /&gt;
&lt;pre class="brush: ps;"&gt;&lt;big face="" happy=""&gt;&lt;span style="font-size: small;"&gt;$searchSettingGroup = Get-FASTSearchSearchSettingGroup
$globalPromotions = $searchSettingGroup.PromotionsWithoutKeyword
$globalPromotion = $globalPromotions.AddPromotion("FQL size and file") 
$globalPromotion.BoostValue = "-4000"
$fql = 'and(size:range(int("3145728"),max,from="gt",to="le"),url:starts-with("file://"))'
$globalPromotion.PromotedItems.AddPromotedExpression($fql)&lt;/span&gt;&lt;/big&gt;&lt;/pre&gt;
&lt;big face="" happy=""&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/big&gt;&lt;br /&gt;
&lt;big face="" happy=""&gt;&lt;span style="font-size: small;"&gt;Hope this will come in handy!&lt;/span&gt;&lt;/big&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-5871064969851277774?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oQz0KR18i6rgGi-PVfrMvr7UTWA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oQz0KR18i6rgGi-PVfrMvr7UTWA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oQz0KR18i6rgGi-PVfrMvr7UTWA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oQz0KR18i6rgGi-PVfrMvr7UTWA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/jUPSiDjkUYs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/5871064969851277774/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/11/taking-promotionsdemotions-one-step.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/5871064969851277774?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/5871064969851277774?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/jUPSiDjkUYs/taking-promotionsdemotions-one-step.html" title="Taking promotions/demotions one step further in FAST Search for SharePoint" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-I44OejmwgNc/TslZQw1H4QI/AAAAAAAAAPs/FrzIYMq9FYg/s72-c/promotions_thumb%25255B1%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/11/taking-promotionsdemotions-one-step.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8ESXs8eyp7ImA9WhdaEk8.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-6394122853825462152</id><published>2011-10-21T22:09:00.002+02:00</published><updated>2011-10-21T22:10:08.573+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-21T22:10:08.573+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>Error while running the FAST for SharePoint post configuration</title><content type="html">During a customer installation the other day my project colleagues encountered a weird issue when configuring up a FAST server. (This was after we got all policy issues resolved due to server hardening – which took some time as well).&lt;br /&gt;
&lt;br /&gt;
When running the configuration wizard they got an unexpected error, and the configuration didn’t finish.&lt;br /&gt;
Time to hit the installer log…. The error they got was hidden a bit down the load and was coming from the “ULS Common Core Components” which is installed during configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;20.10.2011 14:42:39 Verbose InstallAction - Installing ULSCommonCore services
&lt;span style="background-color: yellow;"&gt;20.10.2011 14:42:39 Verbose Executing ULSCommonCore installer msiexec /i "C:\FASTSearch\\installer\files\ulscommoncore.msi" /quiet /norestart INSTALLLEVEL=100 -&lt;/span&gt; 
20.10.2011 14:42:39 Verbose Utility.Execute - Starting process msiexec with working directory - , write output - False, file - , user - 
20.10.2011 14:42:41 Warning Utility.Execute - Return code for binary msiexec is not 0. This may indicate that binary didn't execute successfully
20.10.2011 14:42:41 Verbose Utility.Execute - Finished executing msiexec
20.10.2011 14:42:41 Error InstallULSCommonCore - An error occurred while executing binary msiexec. Return code is not 0.
&lt;span style="background-color: yellow;"&gt;20.10.2011 14:42:41 Error Utility.WriteException - Exception -  : Exception - System.Management.Automation.RuntimeException: Error executing ULSCommonCore installer.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Upon my suggestion they kicked off the ULS installer manually and got the following pop-up which gave information for further internet searches.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://lh3.ggpht.com/-EXJThWLEJCw/TqHRd14SWlI/AAAAAAAAAPM/oKnFr7WhjCw/s1600-h/image%25255B8%25255D.png"&gt;&lt;img alt="image" border="0" height="94" src="http://lh4.ggpht.com/-JNp1QKa-FII/TqHRemgcwbI/AAAAAAAAAPU/xHLcc0K1z_U/image_thumb%25255B8%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="501" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The error is caused by the registry size being too small and has to be increased. Not too obvious from neither the install log nor the pop-up.&lt;br /&gt;
&lt;br /&gt;
Thanks to the below post for giving the resolution on how to increase it :) &lt;a href="http://www.geosoft.com/support/knowledge-base/errormessage/Error-An-error-occurred-during-the-installation-of-assembly-Microsoft-VC90-ATL"&gt;http://www.geosoft.com/support/knowledge-base/errormessage/Error-An-error-occurred-during-the-installation-of-assembly-Microsoft-VC90-ATL&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-6394122853825462152?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/o7M4IzxwhAhYQPISz2lpvMgPBe4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/o7M4IzxwhAhYQPISz2lpvMgPBe4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/o7M4IzxwhAhYQPISz2lpvMgPBe4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/o7M4IzxwhAhYQPISz2lpvMgPBe4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/e6IPe2VTkgo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/6394122853825462152/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/10/error-while-running-fast-for-sharepoint.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/6394122853825462152?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/6394122853825462152?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/e6IPe2VTkgo/error-while-running-fast-for-sharepoint.html" title="Error while running the FAST for SharePoint post configuration" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-JNp1QKa-FII/TqHRemgcwbI/AAAAAAAAAPU/xHLcc0K1z_U/s72-c/image_thumb%25255B8%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/10/error-while-running-fast-for-sharepoint.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4MQHk9fip7ImA9WhdbGEo.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-6426770143309143897</id><published>2011-10-17T21:15:00.001+02:00</published><updated>2011-10-17T21:16:21.766+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-17T21:16:21.766+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="upgrade" /><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>A side-by-side approach for upgrading SharePoint search to FAST</title><content type="html">&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-giTvCmXVzVU/Tpx-z9MavpI/AAAAAAAAAO4/JNODaHyvieI/s1600-h/search%252520in%252520cape%25255B5%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="search in cape" border="0" alt="search in cape" align="right" src="http://lh5.ggpht.com/-ciFhuhOSzIE/Tpx-0gYeAgI/AAAAAAAAAPA/kah8IkC5Jgk/search%252520in%252520cape_thumb%25255B3%25255D.png?imgmax=800" width="242" height="152" /&gt;&lt;/a&gt;More and more businesses are upgrading their existing SharePoint 2010 search solutions to FAST Search for SharePoint. Doing so will most likely require scheduled downtime when you make the actual switch.&lt;/p&gt;  &lt;p&gt;This can be avoided by cleverly upgrading your existing Search Service Application to a FAST Query SSA.&lt;/p&gt;  &lt;p&gt;Want to learn more? Head over to my article at &lt;a href="http://pzl.no/qKacHz" target="_blank"&gt;NothingButSharePoint&lt;/a&gt;.com for the details - &lt;a title="http://pzl.no/qKacHz" href="http://pzl.no/qKacHz"&gt;http://pzl.no/qKacHz&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-6426770143309143897?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YcH53Y1_cy_1HvEzFydcUKV2yfY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YcH53Y1_cy_1HvEzFydcUKV2yfY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YcH53Y1_cy_1HvEzFydcUKV2yfY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YcH53Y1_cy_1HvEzFydcUKV2yfY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/ejSp4CsE5uY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/6426770143309143897/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/10/side-by-side-approach-for-upgrading.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/6426770143309143897?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/6426770143309143897?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/ejSp4CsE5uY/side-by-side-approach-for-upgrading.html" title="A side-by-side approach for upgrading SharePoint search to FAST" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-ciFhuhOSzIE/Tpx-0gYeAgI/AAAAAAAAAPA/kah8IkC5Jgk/s72-c/search%252520in%252520cape_thumb%25255B3%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/10/side-by-side-approach-for-upgrading.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04MQ3g8fSp7ImA9WhdVFko.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-719912194287598012</id><published>2011-09-21T22:11:00.001+02:00</published><updated>2011-09-22T10:26:22.675+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-22T10:26:22.675+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="community" /><category scheme="http://www.blogger.com/atom/ns#" term="search" /><title>NSC Talk–SharePoint search planning 101</title><content type="html">Today was an excellent meeting at the Norwegian SharePoint Community where I had the pleasure to do one of three talks for the evening.&lt;br /&gt;
&lt;br /&gt;
The first talk was by Henning Strand from Mills. Henning talked about their process portal to support product development, a portal made with very little code. The second talk was by my colleague Mads Nissen, outlining how we at &lt;a href="http://www.puzzlepart.com/"&gt;Puzzlepart &lt;/a&gt;do apps development for SharePoint without using SharePoint – only ASP.Net and Excel. Both talks were very interesting and targeted both end-users and devs.&lt;br /&gt;
&lt;br /&gt;
Last one out was myself doing a slide only talk on SharePoint search planning, where I tried to level the crowd from level 100 to level 400 on the &lt;a href="http://pzl.no/nalinQ" target="_blank"&gt;SharePoint maturity model&lt;/a&gt; regarding search, in just 25 minutes.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder="0" height="327" scrolling="no" src="http://r.office.microsoft.com/r/rlidPowerPointEmbed?p1=1&amp;amp;p2=1&amp;amp;p3=SD9ECC38025E460FC4!804&amp;amp;p4=&amp;amp;kip=1" width="402"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
Henning and Mads both went over their allotted time so I did my presentation in a lightning fast tempo. My Cliffs Notes reference went above everyone's heads as they had never heard about it, but I hope the crowd got the message in spite of me talking extremely fast. I talk quite fast when getting excited, and trying to catch up the lost time didn’t help :)&lt;br /&gt;
&lt;br /&gt;
Also thanks to Michal Pisarek for letting me "steal" from “&lt;a href="http://www.slideshare.net/michalpisarek/why-your-sharepoint-2010-search-sucks" target="_blank"&gt;Why Your SharePoint Search Sucks&lt;/a&gt;”, a slide deck worth going over. Mine was sort of the Cliffs Notes of his talk. Both talks about the same topic but with different approaches.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-719912194287598012?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pIh3nd6YgOK80Ob7B1aRnkAbxhM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pIh3nd6YgOK80Ob7B1aRnkAbxhM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pIh3nd6YgOK80Ob7B1aRnkAbxhM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pIh3nd6YgOK80Ob7B1aRnkAbxhM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/bCiFdc4bmuI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/719912194287598012/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/09/nsc-talksharepoint-search-planning-101.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/719912194287598012?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/719912194287598012?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/bCiFdc4bmuI/nsc-talksharepoint-search-planning-101.html" title="NSC Talk–SharePoint search planning 101" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/09/nsc-talksharepoint-search-planning-101.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cDQHY6fip7ImA9WhdWE04.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-2719657554944907778</id><published>2011-09-06T20:50:00.002+02:00</published><updated>2011-09-06T20:51:11.816+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-06T20:51:11.816+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".net" /><category scheme="http://www.blogger.com/atom/ns#" term="code" /><category scheme="http://www.blogger.com/atom/ns#" term="c#" /><category scheme="http://www.blogger.com/atom/ns#" term="optimize" /><title>How would you optimize this piece of C# code?</title><content type="html">&lt;a href="http://lh3.ggpht.com/-Js112ssxbww/TmZrg-1dIcI/AAAAAAAAAOw/gGTzRBWFYSc/s1600-h/csharp%25255B9%25255D.png"&gt;&lt;img align="left" alt="csharp" border="0" height="160" src="http://lh4.ggpht.com/-_mVRKKH49_U/TmZrhsNDRAI/AAAAAAAAAO0/WQVjSqIranc/csharp_thumb%25255B7%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; float: left; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="csharp" width="120" /&gt;&lt;/a&gt;I’ve been digging into some code lately when getting into an existing project, and came across these two lines:&lt;br /&gt;
&lt;div style="clear: both;"&gt;&lt;/div&gt;&lt;pre class="brush: csharp;"&gt;if (Math.Max(thisString.Length, otherString.Length) &amp;gt; Math.Pow(2, 31))
throw new ArgumentException("String too long");&lt;/pre&gt;&lt;br /&gt;
Looking at the code I see right away that this is ported from some other language over to C#. It’s quite easy to optimize it…. how would you do it?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-2719657554944907778?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dtMQ6kFc1ezwQZ6d_seApu2B4d8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dtMQ6kFc1ezwQZ6d_seApu2B4d8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dtMQ6kFc1ezwQZ6d_seApu2B4d8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dtMQ6kFc1ezwQZ6d_seApu2B4d8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/6nJt_4-VGTw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/2719657554944907778/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/09/how-would-you-optimize-this-piece-of-c.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/2719657554944907778?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/2719657554944907778?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/6nJt_4-VGTw/how-would-you-optimize-this-piece-of-c.html" title="How would you optimize this piece of C# code?" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-_mVRKKH49_U/TmZrhsNDRAI/AAAAAAAAAO0/WQVjSqIranc/s72-c/csharp_thumb%25255B7%25255D.png?imgmax=800" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/09/how-would-you-optimize-this-piece-of-c.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkACQn4-eCp7ImA9WhdXF00.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-8785715464705994389</id><published>2011-08-30T12:39:00.000+02:00</published><updated>2011-08-30T12:39:23.050+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-30T12:39:23.050+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="design" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><title>Adding the left navigation menu to web part pages in SharePoint 2010</title><content type="html">I taught a SharePoint 2010 super-user class last week, and the students experienced like so many before them that the web part page layouts which come with SharePoint 2010 removes the left hand navigation menu (the quick launch).&lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/-tn_O9lhJ7nA/Tly9HJzoHRI/AAAAAAAAAOM/u5JKPbIfxfI/s1600-h/image%25255B4%25255D.png"&gt;&lt;img alt="image" border="0" height="410" src="http://lh5.ggpht.com/-kkcxo2MvEc4/Tly9ICEUPeI/AAAAAAAAAOQ/qhIF-23ro3c/image_thumb%25255B2%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="504" /&gt;&lt;/a&gt;&lt;br /&gt;
This is nothing new and it has been blogged about since 2007. But on my 15 minute Google spree this morning I could not find a recipe which worked 100% with SharePoint 2010,&amp;nbsp; so I will give it a try myself, and hopefully this can help some others in the future. I’m sure someone else has a complete post on this which I missed, but at least I have leveled up myself in the use of SharePoint Designer and modifying existing layouts instead of creating custom ones :)&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;Step 1 – Create a new web part page&lt;/h3&gt;Create a new web part page either via SharePoint or SharePoint Designer&lt;br /&gt;
&lt;h3&gt;Step 2 – Edit the page in SharePoint Designer&lt;/h3&gt;Edit your web part page in “Advanced Mode” in SharePoint Designer&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://lh6.ggpht.com/-y968rVBWxgI/Tly9Jojv02I/AAAAAAAAAOY/h1MRlQyx3TE/s1600-h/image%25255B9%25255D.png"&gt;&lt;img alt="image" border="0" height="275" src="http://lh6.ggpht.com/-dYqGHYKtGC4/Tly9KdacbfI/AAAAAAAAAOc/eX5dJXhnY2Q/image_thumb%25255B5%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="504" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;Step 3 – Remove custom css&lt;/h3&gt;Around line 34 you will find a code block like the one below&lt;br /&gt;
&lt;pre class="brush: xml;"&gt;&amp;lt;SharePoint:UIVersionedContent ID="WebPartPageHideQLStyles" UIVersion="4" runat="server"&amp;gt;
&amp;lt;ContentTemplate&amp;gt;
&amp;lt;style type="text/css"&amp;gt;
body #s4-leftpanel {
display:none;
}
.s4-ca {
margin-left:0px;
}
&amp;lt;/style&amp;gt;
&amp;lt;/ContentTemplate&amp;gt;
&amp;lt;/SharePoint:UIVersionedContent&amp;gt;&lt;/pre&gt;&lt;br /&gt;
Delete this code block.&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: 19px; font-weight: bold;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: 19px; font-weight: bold;"&gt;Step 4 – Remove the overrides for the left column&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Further down you will find three lines which prevents the left column for rendering.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: xml;"&gt;&amp;lt;asp:Content ContentPlaceHolderId="PlaceHolderPageImage" runat="server"&amp;gt;&amp;lt;/asp:Content&amp;gt;
&amp;lt;asp:Content ContentPlaceHolderId="PlaceHolderNavSpacer" runat="server"&amp;gt;&amp;lt;/asp:Content&amp;gt;
&amp;lt;asp:Content ContentPlaceHolderId="PlaceHolderLeftNavBar" runat="server"&amp;gt;&amp;lt;/asp:Content&amp;gt;&lt;/pre&gt;&lt;br /&gt;
Remove all three lines.&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: 19px; font-weight: bold;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: 19px; font-weight: bold;"&gt;Step 5 –Save the page&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Save and publish your page.&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: 19px; font-weight: bold;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: 19px; font-weight: bold;"&gt;Step 6 – Preview your changes&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/-XrPNAZbewn8/Tly9LG7Y08I/AAAAAAAAAOg/iB2QpQ5W-YI/s1600-h/image%25255B14%25255D.png"&gt;&lt;img alt="image" border="0" height="436" src="http://lh6.ggpht.com/-mOIvRFev4uo/Tly9MIndVLI/AAAAAAAAAOk/0hLUOeC8_aw/image_thumb%25255B8%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="504" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-8785715464705994389?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/l0YMOmM5kAJXiejmD0VcIOuqj0M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l0YMOmM5kAJXiejmD0VcIOuqj0M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/l0YMOmM5kAJXiejmD0VcIOuqj0M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l0YMOmM5kAJXiejmD0VcIOuqj0M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/40zm3oKE874" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/8785715464705994389/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/08/adding-left-navigation-menu-to-web-part.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/8785715464705994389?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/8785715464705994389?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/40zm3oKE874/adding-left-navigation-menu-to-web-part.html" title="Adding the left navigation menu to web part pages in SharePoint 2010" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-kkcxo2MvEc4/Tly9ICEUPeI/AAAAAAAAAOQ/qhIF-23ro3c/s72-c/image_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/08/adding-left-navigation-menu-to-web-part.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIBQXY6fip7ImA9WhdQEEk.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-1612600019815859440</id><published>2011-08-11T09:25:00.001+02:00</published><updated>2011-08-11T09:25:50.816+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-11T09:25:50.816+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>Why you should use deep refiners with FAST for SharePoint</title><content type="html">&lt;p&gt;With FAST for SharePoint you have what is called deep refiners, compared to shallow refiners which the built-in search uses. The difference is that deep refiners guarantee an exact refiner count, and all possible refiner values for your search, while shallow will calculate the counts based on the first 50 hits (default setting which can be adjusted). In addition to deep refiners, FAST for SharePoint also supports shallow refiners.&lt;/p&gt;  &lt;p&gt;The first image shows a query using FAST for SharePoint with deep refiners and the second image show the built-in SharePoint Search with shallow refiners.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-9f8qo-_kUYk/TkOD9nAdIxI/AAAAAAAAAN8/nNydAvSPiIA/s1600-h/image%25255B11%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-RuBAJ-rlBK4/TkOD-cZdoiI/AAAAAAAAAOA/LVes9wGG-S8/image_thumb%25255B7%25255D.png?imgmax=800" width="504" height="362" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-573StVk6l4c/TkOD-7SUiaI/AAAAAAAAAOE/ZDqr4O11ozQ/s1600-h/image%25255B15%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-8RtQ1l3j-TU/TkOD_hZxPRI/AAAAAAAAAOI/FeD3p14RnVs/image_thumb%25255B9%25255D.png?imgmax=800" width="504" height="371" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;With FAST for SharePoint deep refiners are stored in a separate data structure (mostly in memory), optimized for just that; returning the refiners. Think of it as a pre-calculated refiner tree, ready for the picking.&lt;/p&gt;  &lt;p&gt;Shallow refiners on the other hand have to be manually constructed by the query server from the results returned. Returning a large result set, looking at the metadata and building the refiners, is both IO and CPU intensive, as it has to retrieve all metadata per item, and then build the refinement result based on that.&lt;/p&gt;  &lt;p&gt;Of course, basing the refiners on 50 results is a speedy operation, but at the cost of the accuracy of deep refiners.&lt;/p&gt;  &lt;p&gt;So, when you create a refiner with FAST for SharePoint, be sure to tick off the “Deep refiner” checkbox to take advantage of the refiner structure stored within the search index. You will not only get more accurate results, but in most cases they will also return even faster than shallow ones.&lt;/p&gt;  &lt;p&gt;PS! There are cases when deep refiners will be slow, particularly if you have very many unique values within a refiner. Then again, if this is the case, you might want to re-think your search solution.&lt;/p&gt;  &lt;p&gt;(Reference: &lt;a href="http://technet.microsoft.com/en-us/library/gg193929.aspx"&gt;http://technet.microsoft.com/en-us/library/gg193929.aspx&lt;/a&gt;)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-1612600019815859440?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ob3ll2USA1eSEFDNjfDT91c0A30/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ob3ll2USA1eSEFDNjfDT91c0A30/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ob3ll2USA1eSEFDNjfDT91c0A30/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ob3ll2USA1eSEFDNjfDT91c0A30/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/sc5qOChOayM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/1612600019815859440/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/08/why-you-should-use-deep-refiners-with.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/1612600019815859440?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/1612600019815859440?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/sc5qOChOayM/why-you-should-use-deep-refiners-with.html" title="Why you should use deep refiners with FAST for SharePoint" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-RuBAJ-rlBK4/TkOD-cZdoiI/AAAAAAAAAOA/LVes9wGG-S8/s72-c/image_thumb%25255B7%25255D.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/08/why-you-should-use-deep-refiners-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkAMRnczcSp7ImA9WhdRGUs.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-7745235314160394608</id><published>2011-08-10T11:28:00.006+02:00</published><updated>2011-08-10T11:33:07.989+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-10T11:33:07.989+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="code" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>Working with Content Collections via the API–Continued (and yet another bug)</title><content type="html">Yesterday I wrote about how you could &lt;a href="http://techmikael.blogspot.com/2011/08/how-to-create-content-collection-in.html" target="_blank"&gt;use the admin API to create a new content collection for FAST Search for SharePoint&lt;/a&gt;. I explored this further, and discovered a more serious bug. From within a SharePoint context it will never work (see the end of this post for the solution)  &lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
For the code sample yesterday I instantiated the ContentContext with the line   &lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;ContentContext contentContext = new ContentContext();&lt;/pre&gt;&lt;br /&gt;
Using the default constructor like this implies that the code is run on a server which has FAST Search for SharePoint installed as it will read the configuration file from %FASTSEARCH%\etc\Admin.config.&lt;br /&gt;
&lt;br /&gt;
When using the ContentContext object from within SharePoint you have to go via the FASTAdminProxy property on the SearchServiceApplicationProxy object from the FAST Query SSA. If this sounds greek to you, the code below might shed some light.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;var ssaProxy = (SearchServiceApplicationProxy)SearchServiceApplicationProxy.GetProxy(SPServiceContext.Current);
if (ssaProxy.FASTAdminProxy != null)
{
   var fastProxy = ssaProxy.FASTAdminProxy;
   // Get a reference to the ContentContext via a WCF proxy
   ContentContext coll = fastProxy.ContentCollectionContext;
   coll.Collections.AddCollection("notes", "Lotus notes connection");
}&lt;/pre&gt;&lt;br /&gt;
The FASTAdminProxy reads it’s WCF configuration from C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\WebClients\FASTSearchAdmin\ContentCollectionService\client.config.&lt;br /&gt;
&lt;br /&gt;
But, now we encounter yet another bug. The factory class which creates the proxy has a readonly member “ServicePostfix” which returns the name of the WCF service endpoint. For the ContentContext it returns “ContentCollection.svc”.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;Microsoft.Office.Server.Search.Administration.FASTAdminProxy&lt;/span&gt;&lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;ContentCollectionServiceFactory
      ServicePostfix&lt;/pre&gt;&lt;br /&gt;
But on the FAST server the endpoint is named “ContentCollection&lt;strong&gt;Service&lt;/strong&gt;.svc”, so we get an error that it cannot connect to the WCF service. The fix is simple and involves copying the file&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: georgia, serif; font-size: 13px; line-height: 20px;"&gt;%FASTSEARCH%&lt;/span&gt;\components\admin-services\contentcollectionservice.svc&lt;br /&gt;
&lt;br /&gt;
over to&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #333333; font-family: georgia, serif; font-size: 13px; line-height: 20px;"&gt;%FASTSEARCH%&lt;/span&gt;\components\admin-services\contentcollection.svc&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-7745235314160394608?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CDSUc-HBVY4mSBysz8j6zOCRorE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CDSUc-HBVY4mSBysz8j6zOCRorE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CDSUc-HBVY4mSBysz8j6zOCRorE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CDSUc-HBVY4mSBysz8j6zOCRorE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/jwPWU33jOGQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/7745235314160394608/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/08/working-with-content-collections-via.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/7745235314160394608?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/7745235314160394608?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/jwPWU33jOGQ/working-with-content-collections-via.html" title="Working with Content Collections via the API–Continued (and yet another bug)" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/08/working-with-content-collections-via.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8NSHs_cSp7ImA9WhdRGUs.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-6621892911150373922</id><published>2011-08-09T15:41:00.001+02:00</published><updated>2011-08-10T11:34:59.549+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-10T11:34:59.549+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="code" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>How-to: Create a content collection in code</title><content type="html">&lt;b&gt;(Update: Read&amp;nbsp;&lt;a href="http://techmikael.blogspot.com/2011/08/working-with-content-collections-via.html"&gt;http://techmikael.blogspot.com/2011/08/working-with-content-collections-via.html&lt;/a&gt;&amp;nbsp;for how to do this in a SharePoint context)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
When installing FAST Search for SharePoint it creates a default content collection named “sp” where all content crawled via the FAST Content SSA is stored.&lt;br /&gt;
&lt;br /&gt;
You also have the option to create new collections, and this is typically something you would do for the FAST Specific connectors (FAST Enterprise Web Crawler, FAST Database Connector, FAST Lotus Notes Connector) in order to support management like clearing out all content.&lt;br /&gt;
&lt;br /&gt;
A content collection is merely a logical grouping of content inside of FAST Search for SharePoint, where all items indexed have an additional field named “meta.collection” attached, and not something which affects the physical layout of how FAST stores the search index.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
In PowerShell you can use the command New-FASTSearchContentCollection to create new collections, but sometimes you want to do this in code for example via SharePoint feature activation.&lt;br /&gt;
&lt;br /&gt;
Once you have a reference to the ContentContext object, it’s one line of code to create a new collection:&lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;ContentContext contentContext = new ContentContext();
contentContext.Collections.AddCollection("notes", "Lotus notes connection");&lt;/pre&gt;&lt;br /&gt;
Except if you run this code you get an exception:&lt;br /&gt;
&lt;br /&gt;
Unhandled Exception: Microsoft.SharePoint.Search.Extended.Administration.Common.AdminException: Invalid pipeline name 'Office14'.&lt;br /&gt;
&lt;br /&gt;
The name “Office14” is a static string retrieved from Microsoft.SharePoint.Search.Extended.Administration.Content.CollectionConstants.Office14&lt;br /&gt;
&lt;br /&gt;
So how do we fix this? Examining the pipelines installed for example using PowerShell, we find the correct name of the pipeline:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: ps;"&gt;PS C:\FASTSearch&amp;gt; Get-FASTSearchDocumentProcessingPipeline
Name
----
Office14 (webcluster)
Attachments (webcluster)&lt;/pre&gt;&lt;br /&gt;
The correct name is “Office14 (webcluster)”, not “Office14”. Modifying the initial code to use the overload which also takes in the name of the pipeline to use solves the error:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: csharp;"&gt;contentContext.Collections.AddCollection("notes", "Lotus notes connection", "Office14 (webcluster)");&lt;/pre&gt;&lt;br /&gt;
The “webcluster” part of the name is something which i s carried over from FAST ESP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-6621892911150373922?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/my_HWyx3gmUn8Ec4SQYS-wzsA74/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/my_HWyx3gmUn8Ec4SQYS-wzsA74/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/my_HWyx3gmUn8Ec4SQYS-wzsA74/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/my_HWyx3gmUn8Ec4SQYS-wzsA74/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/jTu0z9vYZRs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/6621892911150373922/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/08/how-to-create-content-collection-in.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/6621892911150373922?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/6621892911150373922?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/jTu0z9vYZRs/how-to-create-content-collection-in.html" title="How-to: Create a content collection in code" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/08/how-to-create-content-collection-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04BSXc7eip7ImA9WhdRF0U.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-3542722307109073449</id><published>2011-08-08T09:25:00.001+02:00</published><updated>2011-08-08T08:45:58.902+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-08T08:45:58.902+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="deploy" /><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>Updated sample deployment files with FAST Search for SharePoint SP1</title><content type="html">With service pack 1 (or the June 2011 CU) the sample deployment files included with FAST for SharePoint has been updated. The single server sample is still the same, as there is not much room for changing where you put components, but both the multi-server samples have some changes.&lt;br /&gt;
The changes align better with recommend best practice according to the number of nodes used in the samples. Depending on your requirements you can use the provided samples as starting points and modifying them to your needs.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;deployment.sample.multi1.xml&lt;/h3&gt;This is a sample configuration for a two server deployment with search redundancy.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Removed failover on indexing&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
The second host has removed &lt;em&gt;&amp;lt;content-distributor&amp;gt;&lt;/em&gt; and &lt;em&gt;&amp;lt;indexing-dispatcher&amp;gt;&lt;/em&gt; nodes. In a two node system it is better to have a performant system for searching, letting one of the nodes be a pure search server. The configuration still has failover for searching with two search rows.&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;The number of document processors is increased from 4 to 8&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
The recommended setup is one document processor per CPU core, and many servers today come with 8 cores (single quad-core cpu with hyper-threading = 8 visible cores in the OS).&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;The Enterprise Web Crawler has been removed from the configuration&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
For most scenarios you will use the web crawler in SharePoint instead of the FAST Enterprise Web Crawler, so there is no need to include it in the deployment configuration.&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Max-targets for the webanalyzer has been increased from 2 to 4&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Max targets specify the number of CPU's the web analyzer utilizes, and aligns better with the number of cpu’s on a typical server.&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Removed failover webanalyzer component&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
By removing the attribute &lt;em&gt;redundant-lookup="true"&lt;/em&gt; from the &lt;em&gt;&amp;lt;webanalyzer&amp;gt; &lt;/em&gt;node on the first host, and removing the &lt;em&gt;&amp;lt;webanalyzer&amp;gt;&lt;/em&gt; node entirely from the second host, failover of the webanalyzer is removed from the sample configuration. In a two server setup failover on this component is not necessary. If the first host which is responsible for indexing dies, indexing will stop working, and the webanalyzer is dependent on indexing in order to get data to work with.&lt;br /&gt;
&lt;h3&gt;deployment.sample.multi2.xml&lt;/h3&gt;This is a sample configuration for a five server deployment with a separate admin server, search redundancy, feeding redundancy and indexing redundancy. The updated sample has removed redundancy on the web analyzer component.&lt;br /&gt;
&lt;br /&gt;
If a server performing database lookup fails for link analysis, and there is no redundancy, this will block crawling.&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Admin server changes&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
The admin server used to have the Enterprise Web Crawler, but that is now replaced with the web analyzer and 8 document processors.&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;First indexer node&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
The web analyzer is moved over to the admin node, and the number of document processors has been increased from 4 to 8.&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Second indexer node&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Number of document processors increased from 4 to 8, and the failover web analyzer component is removed from the server.&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Search nodes&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
The search node configurations are left as is, only serving search requests.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-3542722307109073449?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/juZ3_fNDmoDUypLNqRTFZ_BvdXs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/juZ3_fNDmoDUypLNqRTFZ_BvdXs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/juZ3_fNDmoDUypLNqRTFZ_BvdXs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/juZ3_fNDmoDUypLNqRTFZ_BvdXs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/WRKWbYaFdws" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/3542722307109073449/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/08/updated-sample-deployment-files-with.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/3542722307109073449?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/3542722307109073449?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/WRKWbYaFdws/updated-sample-deployment-files-with.html" title="Updated sample deployment files with FAST Search for SharePoint SP1" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/08/updated-sample-deployment-files-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAASXgzeSp7ImA9WhRQFEw.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-2011454437624090552</id><published>2011-08-05T09:48:00.006+02:00</published><updated>2011-12-09T08:12:28.681+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-09T08:12:28.681+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>Creating refinement query parameter for FS4SP by code</title><content type="html">&lt;b&gt;[Update: 2011-12-09]&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;Someone from somewhere took the time to use Reflector and pull out the appropriate code from the FS4SP dlls. Download the code below.&lt;/i&gt;&lt;br /&gt;
&lt;iframe frameborder="0" height="120px" marginheight="0" marginwidth="0" scrolling="no" src="https://skydrive.live.com/embed?cid=9ECC38025E460FC4&amp;amp;resid=9ECC38025E460FC4%21840&amp;amp;authkey=AFmm8RX6CUuQGlM" style="background-color: #fcfcfc; padding: 0;" title="Preview" width="98px"&gt;&lt;/iframe&gt;
&lt;br /&gt;
When using the Search Center with FAST Search for SharePoint you will see the query parameters being modified when you interact with the page.&lt;br /&gt;
&lt;br /&gt;
The &lt;strong&gt;k=&lt;/strong&gt; parameter holds your search query. This is useful if you create a link somewhere on your site which redirects you to the search page with a pre-set query. An example is creating a link which displays all the documents from a particular employee containing the word contract.&lt;br /&gt;
&lt;br /&gt;
This can be accomplished by the query:&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;contract author:”Mikael Svenson”&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
which in the k= parameter looks like:&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;k=contract%20author%3A%22Mikael%20Svenson%22&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
And this works just fine. What doesn’t work is if you have specified a synonym for the word &lt;strong&gt;contract&lt;/strong&gt;. When tacking on the &lt;strong&gt;author&lt;/strong&gt; parameter to the query, it will no longer match in the synonym list, as the synonyms match the whole query term, not just a single word.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Another approach would be to add the &lt;strong&gt;author&lt;/strong&gt; filter as a refiner instead in the &lt;strong&gt;r=&lt;/strong&gt; query parameter, leaving only the word in the &lt;strong&gt;k=&lt;/strong&gt; parameter which will match the synonym definition.&lt;br /&gt;
&lt;br /&gt;
However, if you look at the &lt;strong&gt;r=&lt;/strong&gt; parameter for a query refining on me as an author it looks like this:&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;r=author%3D%22AQ5NaWthZWwgU3ZlbnNvbgZhdXRob3IBAl4iAiIk%22&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
The quick ones out there spot this as being a base64 encoded string. If you decode the string and with some investigation you can find out how it’s being built up.&lt;br /&gt;
&lt;br /&gt;
The structure looks like this:&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;(char)1   &lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;(char)length of property value    &lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;property value    &lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;(char)length of property name    &lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;property name    &lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;(char)1    &lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;(char)2 //length of the next two bytes    &lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;^”    &lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;(char)2 //length of the next two bytes    &lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;“$&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
For your convenience I have created a small class which does the heavy lifting for you.&lt;br /&gt;
&lt;br /&gt;
The usage is like this:&lt;br /&gt;
&lt;br /&gt;
BuildRefinerParameter builder = new BuildRefinerParameter();   &lt;br /&gt;
builder.AddRefiner("format", "Adobe PDF");    &lt;br /&gt;
builder.AddRefiner("companies", "Microsoft");    &lt;br /&gt;
string url = builder.GetRefinerQueryParameter();&lt;br /&gt;
&lt;br /&gt;
And the class itself:&lt;br /&gt;
&lt;br /&gt;
class BuildRefinerParameter   &lt;br /&gt;
{    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dictionary&amp;lt;string,string&amp;gt; _refiners = new Dictionary&amp;lt;string, string&amp;gt;();    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void AddRefiner(string key, string value)    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _refiners[key] = value;    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public string GetRefinerQueryParameter()   &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StringBuilder sb = new StringBuilder();    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (var refiner in _refiners)    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.Append(refiner.Key);    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.Append('=');    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.Append('"');    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string base64encodedRefiner = CodeRefinerParameter(refiner);    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.Append(Convert.ToBase64String(Encoding.UTF8.GetBytes(base64encodedRefiner)));    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.Append('"');    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.Append(' ');    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; string url = HttpUtility.UrlEncode(sb.ToString().Trim());    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return url;    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private static string CodeRefinerParameter(KeyValuePair&amp;lt;string, string&amp;gt; refiner)   &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var refkey = refiner.Key;    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var refval = refiner.Value;    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StringBuilder coded = new StringBuilder();    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; coded.Append((char) 1);    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; coded.Append((char) refval.Length);    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; coded.Append(refval);    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; coded.Append((char) refkey.Length);    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; coded.Append(refkey);    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; coded.Append((char) 1);    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; coded.Append((char) 2);    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; coded.Append('^');    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; coded.Append('"');    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; coded.Append((char) 2);    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; coded.Append('"');    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; coded.Append('$');    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return coded.ToString();    &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }    &lt;br /&gt;
}    &lt;br /&gt;
}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-2011454437624090552?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dTKaU0skW1lbFjYTP8dX8s3R69E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dTKaU0skW1lbFjYTP8dX8s3R69E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dTKaU0skW1lbFjYTP8dX8s3R69E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dTKaU0skW1lbFjYTP8dX8s3R69E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/sSbqB6DTGRU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/2011454437624090552/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/08/creating-refinement-query-parameter-for.html#comment-form" title="18 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/2011454437624090552?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/2011454437624090552?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/sSbqB6DTGRU/creating-refinement-query-parameter-for.html" title="Creating refinement query parameter for FS4SP by code" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>18</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/08/creating-refinement-query-parameter-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQFSHw5eCp7ImA9WhdSFUw.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-8324198799219186528</id><published>2011-07-24T14:23:00.004+02:00</published><updated>2011-07-24T14:25:19.220+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-24T14:25:19.220+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="search" /><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>Creating a scope to limit by content collection</title><content type="html">When working with FAST Search Server for SharePoint and especially if you are using one of the custom FAST connectors you will usually create additional content collections with the command: &lt;strong&gt;New-FASTSearchContentCollection&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://lh6.ggpht.com/-3LKZDXdNvsI/TiwOu7_KDnI/AAAAAAAAAN0/0r4HwoBvFG8/s1600-h/2430680365_410bc05f07_m%25255B3%25255D.jpg"&gt;&lt;img align="left" alt="2430680365_410bc05f07_m" border="0" height="184" src="http://lh3.ggpht.com/-48QZvRlMBIc/TiwOvevBd5I/AAAAAAAAAN4/f_nW9u_ig7M/2430680365_410bc05f07_m_thumb%25255B1%25255D.jpg?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; float: left; margin: 0px 5px 0px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="2430680365_410bc05f07_m" width="244" /&gt;&lt;/a&gt;This will logically separate content from for example the FAST Enterprise Web Crawler from content indexed from SharePoint into the &lt;strong&gt;sp&lt;/strong&gt; collection (which is the default collection for the FAST Content SSA).&lt;br /&gt;
&lt;br /&gt;
What if you want to show results only from the web crawl? If it had been a content source on the FAST Content SSA you could have created a search scope to limit by content source like this:&lt;br /&gt;
&lt;br /&gt;
New-SPEnterpriseSearchQueryScope -SearchApplication "FAST Query SSA" -Name MyContentScope -Description "Content Source Scope" -DisplayInAdminUI 1 -ExtendedSearchFilter '&lt;em&gt;contentsource:MyContentSourceName&lt;/em&gt;'&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Since the FAST specific connectors don’t register as content sources on the FAST Content SSA we have to use an old FAST ESP trick instead. A content collection is merely a logical grouping of content inside the search index, and each collection will have meta data per item informing us of which content collection the item belongs to.&lt;br /&gt;
&lt;br /&gt;
By creating a scope on the &lt;strong&gt;meta.collection&lt;/strong&gt; property, we achieve what we set out to, limit the results per content collection.&lt;br /&gt;
&lt;br /&gt;
If your content collection for the web crawl is named &lt;strong&gt;web&lt;/strong&gt;, then the following PowerShell command would create a scope which filters on the &lt;strong&gt;web&lt;/strong&gt; collection.&lt;br /&gt;
&lt;br /&gt;
New-SPEnterpriseSearchQueryScope -SearchApplication "FAST Query SSA" -Name MyCollectionScope -Description "Collection Scope" -DisplayInAdminUI 1 -ExtendedSearchFilter '&lt;em&gt;meta.collection:web&lt;/em&gt;'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-8324198799219186528?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ObVvdCQgqeesbmh-aH7K1_8nHjQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ObVvdCQgqeesbmh-aH7K1_8nHjQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ObVvdCQgqeesbmh-aH7K1_8nHjQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ObVvdCQgqeesbmh-aH7K1_8nHjQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/0O7F2VqJSLE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/8324198799219186528/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/07/creating-scope-to-limit-by-content.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/8324198799219186528?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/8324198799219186528?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/0O7F2VqJSLE/creating-scope-to-limit-by-content.html" title="Creating a scope to limit by content collection" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-48QZvRlMBIc/TiwOvevBd5I/AAAAAAAAAN4/f_nW9u_ig7M/s72-c/2430680365_410bc05f07_m_thumb%25255B1%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/07/creating-scope-to-limit-by-content.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUAASHc7fCp7ImA9WhdSEUk.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-8485107050681162583</id><published>2011-07-19T22:52:00.001+02:00</published><updated>2011-07-20T08:35:49.904+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-20T08:35:49.904+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="webpart" /><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>Released: SharePoint Search Parts</title><content type="html">&lt;p&gt;The past couple of weeks I’ve been working evenings and some during the day when my kid is asleep on a FQL (FAST Query Language) enabled Core Results web part. The reason for going fql is not to write it directly into the search box, but in order to provide proper synonym and wildcard support. (&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt;: fql is only supported with FAST for SharePoint&lt;/em&gt;)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-LgKoP4zmyfk/TiXunHB88UI/AAAAAAAAANs/NiL-FixDjos/s1600-h/image%25255B7%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 5px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh5.ggpht.com/-c4t-bMM5Zhw/TiXun4LkLHI/AAAAAAAAANw/gWFA2_daYdw/image_thumb%25255B2%25255D.png?imgmax=800" width="231" height="258" /&gt;&lt;/a&gt;The project can be found at &lt;a href="http://spsearchparts.codeplex.com/"&gt;http://spsearchparts.codeplex.com/&lt;/a&gt; and is currently in alpha. It might actually be higher quality than what you expect from an alpha version, but I haven’t had time to test it properly.&lt;/p&gt;  &lt;p&gt;The biggest undertaking in the project was to write a kql-&amp;gt;fql parser. I think the parser works ok at the moment, but there is always room for improvement, and I might have missed something.&lt;/p&gt;  &lt;p&gt;The other technical challenge was to enable fql support in the web part. Thankfully, Ivan Neganov has a &lt;a href="http://neganov.blogspot.com/2011/01/extending-coreresultswebpart-to-handle.html" target="_blank"&gt;blog post&lt;/a&gt; on how to do this which&amp;#160; I used as foundation for the web part. I did however change the use of direct reflection to use IL.Emit, as it’s more performant and can be cached, but it’s still reflection ;-)&lt;/p&gt;  &lt;p&gt;Synonyms are expanded based on single words or phrases. If you add a synonym in SharePoint with two or more words, it will only match in “&lt;em&gt;search phrases&lt;/em&gt;” with quotes. I might change this to match multiple terms as well. Synonyms are also lemmatized/stemmed, which they are not in the standard web part.&lt;/p&gt;  &lt;p&gt;There is also an option to boost the original query words over the synonyms which could be useful. At least it was fun to implement :-)&lt;/p&gt;  &lt;p&gt;Wildcards are supported like they are in fql, where both ? and * can be used, and also anywhere in the words.&lt;/p&gt;  &lt;p&gt;When using the web part you can use my query tool at &lt;a href="http://fs4splogger.codeplex.com/"&gt;http://fs4splogger.codeplex.com/&lt;/a&gt; to inspect how the kql query is transformed into fql. This will also show synonym expansion and added scopes.&lt;/p&gt;  &lt;p&gt;I plan to add more search parts as I have time, and hopefully the project can grow into something really useful.&lt;/p&gt;  &lt;p&gt;More information can be found at the &lt;a href="http://spsearchparts.codeplex.com/" target="_blank"&gt;project page&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-8485107050681162583?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oQvPgj7Ock9GPEavBeU3kbw5odo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oQvPgj7Ock9GPEavBeU3kbw5odo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oQvPgj7Ock9GPEavBeU3kbw5odo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oQvPgj7Ock9GPEavBeU3kbw5odo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/48agG2ZY3Jg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/8485107050681162583/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/07/released-sharepoint-search-parts.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/8485107050681162583?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/8485107050681162583?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/48agG2ZY3Jg/released-sharepoint-search-parts.html" title="Released: SharePoint Search Parts" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-c4t-bMM5Zhw/TiXun4LkLHI/AAAAAAAAANw/gWFA2_daYdw/s72-c/image_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/07/released-sharepoint-search-parts.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cNRXo4fip7ImA9WhdTFEQ.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-8548357333588456335</id><published>2011-07-12T21:30:00.001+02:00</published><updated>2011-07-12T21:31:34.436+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-12T21:31:34.436+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="upgrade" /><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>Improved relevancy with SP1</title><content type="html">&lt;p&gt;This was listed as one of the updated in SP1, and was actually released in the December CU. So what has really changed?&lt;/p&gt;  &lt;p&gt;For all the default Metadata Categories in FAST for SharePoint the default behavior is to map auto-discovered crawled properties to the full-text index.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-9X3oRyuJ_vQ/Thyg2m1jseI/AAAAAAAAANk/kReBJwIAVog/s1600-h/image%25255B6%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-pmEJVeQcflg/Thyg3nDBaQI/AAAAAAAAANo/ayso3G3fEMg/image_thumb%25255B2%25255D.png?imgmax=800" width="504" height="252" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This leads to many irrelevant fields being searchable. The update is in fact adding many of these fields to an ignore list, setting the IsMappedToContents property of the crawled property to false.&lt;/p&gt;  &lt;p&gt;The full list of the added ignored properties can be found in the function ImproveDefaultSchema in C:\FASTSearch\installer\scripts\include\commontasks.ps1.&lt;/p&gt;  &lt;p&gt;The relevancy improvement is to avoid garbage into the index.&lt;/p&gt;  &lt;p&gt;Thanks to Microsoft for providing this information.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-8548357333588456335?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FtwhoyAzT3DEgCZ52gjCcY38-Pc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FtwhoyAzT3DEgCZ52gjCcY38-Pc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FtwhoyAzT3DEgCZ52gjCcY38-Pc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FtwhoyAzT3DEgCZ52gjCcY38-Pc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/ZA0J4ohMgQw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/8548357333588456335/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/07/improved-relevancy-with-sp1.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/8548357333588456335?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/8548357333588456335?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/ZA0J4ohMgQw/improved-relevancy-with-sp1.html" title="Improved relevancy with SP1" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-pmEJVeQcflg/Thyg3nDBaQI/AAAAAAAAANo/ayso3G3fEMg/s72-c/image_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/07/improved-relevancy-with-sp1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMMR3oycSp7ImA9WhZaFk4.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-8269719422091132160</id><published>2011-07-02T20:48:00.001+02:00</published><updated>2011-07-02T20:48:06.499+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-02T20:48:06.499+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="mvp" /><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>SharePoint MVP for 2011</title><content type="html">&lt;p&gt;Yesterday was the first day of my July vacation between jobs, and I was spending the evening having a good time with some friends of mine.&lt;/p&gt;  &lt;p&gt;I arrived at the restaurant 20 minutes early, ordered a beer and checked my e-mail. And there it was, an e-mail from the Microsoft MVP team reading: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Congratulations 2011 Microsoft MVP&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This is my first time being awarded, and I have been awarded in the SharePoint Server category. For those who follow my blog you know that FAST for SharePoint is what I do these days, and it’s a community I very much enjoy being a part of.&lt;/p&gt;  &lt;p&gt;Getting an award is something to live up to in my opinion, and I will try my best to continue to do what I love &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh4.ggpht.com/-6ZlkG-JQT_4/Tg9n5SCD6qI/AAAAAAAAAMo/XWfr-f5cJZA/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;p&gt;PS! We all had a blast last night!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-8269719422091132160?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4x9UnijsySb1mjvm_iE3WIHfPlQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4x9UnijsySb1mjvm_iE3WIHfPlQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4x9UnijsySb1mjvm_iE3WIHfPlQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4x9UnijsySb1mjvm_iE3WIHfPlQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/zD26Nj35U4c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/8269719422091132160/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/07/sharepoint-mvp-for-2011.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/8269719422091132160?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/8269719422091132160?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/zD26Nj35U4c/sharepoint-mvp-for-2011.html" title="SharePoint MVP for 2011" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-6ZlkG-JQT_4/Tg9n5SCD6qI/AAAAAAAAAMo/XWfr-f5cJZA/s72-c/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/07/sharepoint-mvp-for-2011.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cCRXw_fyp7ImA9WhdTE0U.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-7726693574392740715</id><published>2011-06-29T09:48:00.003+02:00</published><updated>2011-07-11T13:51:04.247+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-11T13:51:04.247+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>FAST for SharePoint Service Pack 1</title><content type="html">Together with SharePoint 2010 Service Pack 1, FAST for SharePoint got a service pack on it’s own. you can download it from &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=26612"&gt;http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=26612&lt;/a&gt;&lt;br /&gt;
The most notable fixes for me are:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Improves default schema that improves relevancy&lt;/li&gt;
&lt;li&gt;Better title and date extraction for Microsoft Office documents&lt;/li&gt;
&lt;li&gt;Adds more flexible custom property extractors&lt;/li&gt;
&lt;li&gt;Updated sample deployment templates &lt;strong&gt;&amp;lt;- Note: My example deployment templates were messed up during the install of SP1&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Managed properties does no longer have to be in lowercase in the refinement panel configuration, in the query API’s or in FQL scope filters&lt;/li&gt;
&lt;li&gt;Improves index backup and index restore&lt;/li&gt;
&lt;li&gt;Improved indexing speed for several scenarios&lt;/li&gt;
&lt;li&gt;Fixed index corruption when the indexer crashes&lt;/li&gt;
&lt;li&gt;&lt;strike&gt;Functionality to add search columns to a live system&lt;/strike&gt; &lt;b&gt;[Edit: Was not included afterall, but will in a later CU]&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Infotool.exe will pick up more log files and configuration files&lt;/li&gt;
&lt;/ul&gt;As for the updated custom property extractors, the optionalprocessing.xml configuration file is now obsolete (but backwards compatible) and has been replaced by a new file called CustomPropertyExtractors.xml. (Both reside in C:\FASTSearch\etc\config_data\DocumentProcessor).&lt;br /&gt;
In this new file you can add as many extractor dictionaries as you want, not just three whole-word and two word-part dictionaries as was the limit before. And you can also have both case and case-insensitive matching.&lt;br /&gt;
There is a migration guide at: &lt;a href="http://msdn.microsoft.com/en-us/library/hh285840.aspx"&gt;Migrate custom extractor to sp1&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-7726693574392740715?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/l2_AojsrGihuvRNbXCDWGcqdbLQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l2_AojsrGihuvRNbXCDWGcqdbLQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/l2_AojsrGihuvRNbXCDWGcqdbLQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l2_AojsrGihuvRNbXCDWGcqdbLQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/tFAHBDl7HYg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/7726693574392740715/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/06/fast-for-sharepoint-service-pack-1.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/7726693574392740715?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/7726693574392740715?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/tFAHBDl7HYg/fast-for-sharepoint-service-pack-1.html" title="FAST for SharePoint Service Pack 1" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/06/fast-for-sharepoint-service-pack-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcFR385fip7ImA9WhZbGUw.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-8370553675203458622</id><published>2011-06-24T12:36:00.004+02:00</published><updated>2011-06-24T12:40:16.126+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-24T12:40:16.126+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="search" /><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>Error in default important level weights for the Full-text index mappings</title><content type="html">The title for this post might seem somewhat cryptic if you haven’t worked with managed properties in FAST for SharePoint, and mapped them to different priority levels. But I will walk you thru it getting to the error.&lt;br /&gt;
&lt;br /&gt;
First of all, the relevance score for a search hit in FAST for SharePoint is build up of many different values, where one part of the score is how important is the field which contains data where your query matched. As an example if your query matches words in the title it will get rated higher compared to if it matched in the body text of the document.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
When you create a managed property which holds textual content, you can set how important this field is, from level 1-7 as seen on the image below. You can get to this screen by going to&lt;br /&gt;
&lt;br /&gt;
Central Admin –&amp;gt; FAST Query SSA –&amp;gt; FAST Search Administration –&amp;gt; Managed properties –&amp;gt; &amp;lt;&lt;em&gt;click a property&lt;/em&gt;&amp;gt; –&amp;gt; &amp;lt;&lt;em&gt;scroll to the bottom of the page&lt;/em&gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img alt="image" border="0" height="537" src="http://lh6.ggpht.com/-cATukFYnXUU/TgRoxHChuwI/AAAAAAAAAMc/sxDKH5q_o6s/image%25255B8%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="500" /&gt;&lt;br /&gt;
&lt;br /&gt;
Using PowerShell we can list the weights behind the difference important levels.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: 'Courier New';"&gt;$rankprofile = Get-FASTSearchMetadataRankProfile default      &lt;br /&gt;
$content = $rankprofile.GetFullTextIndexRanks()|where-Object -filterscript {$_.FullTextIndexReference.Name -eq "content"}       &lt;br /&gt;
$content.GetImportanceLevelWeight(1)       &lt;br /&gt;
&lt;span style="background-color: yellow;"&gt;&lt;strong&gt;30&lt;/strong&gt;&lt;/span&gt;       &lt;br /&gt;
$content.GetImportanceLevelWeight(2)       &lt;br /&gt;
10       &lt;br /&gt;
$content.GetImportanceLevelWeight(3)       &lt;br /&gt;
20       &lt;br /&gt;
$content.GetImportanceLevelWeight(4)       &lt;br /&gt;
30       &lt;br /&gt;
$content.GetImportanceLevelWeight(5)       &lt;br /&gt;
40       &lt;br /&gt;
$content.GetImportanceLevelWeight(6)       &lt;br /&gt;
50       &lt;br /&gt;
$content.GetImportanceLevelWeight(7)       &lt;br /&gt;
60&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
As you can see Level 1 has a weight of 30, the same as Level 4, and this is where the error is.&lt;br /&gt;
&lt;br /&gt;
To rule out any magic going on behind the scenes I conducted a test. First I created three crawled properties, which each was mapped to three managed properties, as circled in red in the first image. Then I created three documents with the same content, where &lt;em&gt;levelone.txt&lt;/em&gt; was indexed into the &lt;em&gt;madcowone&lt;/em&gt; field, &lt;em&gt;leveltwo.txt&lt;/em&gt; into &lt;em&gt;madcowtwo&lt;/em&gt; and &lt;em&gt;levelfive.txt&lt;/em&gt; into &lt;em&gt;madcowfive&lt;/em&gt;. I also set the freshness weight to zero, to rule out the time factor on ranking.&lt;br /&gt;
&lt;br /&gt;
When I executed a search against these three documents, they all got the same rank score of 39, but I could see via my &lt;a href="http://fs4splogger.codeplex.com/" target="_blank"&gt;FS4SP Query Logger tool&lt;/a&gt; that they did get different context scores, but they were sorted on random as you can see in the output (shortened for clarity):&lt;br /&gt;
&lt;br /&gt;
&lt;img alt="image" border="0" height="472" src="http://lh3.ggpht.com/-bgDcEflHhO0/TgRoxiSwK4I/AAAAAAAAAMg/bUlps0akbvw/image%25255B11%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="413" /&gt;&lt;br /&gt;
I have highlighted the context score and also the level in which we got a hit, which corresponds to the name of the document. The reason for the low score is that the Context Weight doesn’t count as much compared to other factors in the static rank.&lt;br /&gt;
&lt;br /&gt;
Next I changed the context weight from the default of 50 to 200. Executing the same query I now got these results, sorted in the “correct” order, &lt;em&gt;levelfive.txt&lt;/em&gt;, &lt;em&gt;levelone.txt&lt;/em&gt; and &lt;em&gt;leveltwo.txt&lt;/em&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;img alt="image" border="0" height="469" src="http://lh5.ggpht.com/-9X5THfjmQ00/TgRoyFmAgZI/AAAAAAAAAMk/0LpKLxOxtbM/image%25255B14%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="424" /&gt;&lt;br /&gt;
&lt;br /&gt;
This means that the Level 1 field clearly ranks above Level 2 and 3, and this is most likely an error with the product. And you probably want to change the values for the importance levels in your deployments to match the expected behavior.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-8370553675203458622?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lzx9_lj5MiMWcEoTNeRBMngwYZw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lzx9_lj5MiMWcEoTNeRBMngwYZw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lzx9_lj5MiMWcEoTNeRBMngwYZw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lzx9_lj5MiMWcEoTNeRBMngwYZw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/d_9GGUTF97c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/8370553675203458622/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/06/error-in-default-important-level.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/8370553675203458622?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/8370553675203458622?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/d_9GGUTF97c/error-in-default-important-level.html" title="Error in default important level weights for the Full-text index mappings" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-cATukFYnXUU/TgRoxHChuwI/AAAAAAAAAMc/sxDKH5q_o6s/s72-c/image%25255B8%25255D.png?imgmax=800" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/06/error-in-default-important-level.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUDRn0zeip7ImA9WhZbF0k.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-8186349988760563925</id><published>2011-06-22T14:51:00.002+02:00</published><updated>2011-06-22T14:54:37.382+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-22T14:54:37.382+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="search" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>Deleting a Federated Location via the API</title><content type="html">I’m working on a SharePoint feature which will automatically add a federated search location on feature activation and which will delete it on de-activation.&lt;br /&gt;
&lt;br /&gt;
To accomplish this I use the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.server.search.administration.searchserviceapplication.aspx"&gt;Microsoft.Office.Server.Search.Administration.SearchServiceApplication&lt;/a&gt; class, and more specifically the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.server.search.administration.searchserviceapplication.addnewlocationconfiguration.aspx"&gt;AddNewLocationConfiguration&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.server.search.administration.searchserviceapplication.deletelocationconfiguration.aspx"&gt;DeleteLocationConfiguration&lt;/a&gt; methods. I tried to use the same methods of the SearchServiceApplicationProxy first, but there seems to be an error using the AddNewLocationConfiguration method on proxy object.&lt;br /&gt;
&lt;br /&gt;
AddNewLocationConfiguration takes a LocationConfiguration object as parameter, which can be created by loading in the xml from an OSDX file like this:&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New';"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Courier New'; font-size: x-small;"&gt;var searchLocation = new LocationConfiguration();&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New'; font-size: x-small;"&gt; var stream = …stream to xml file…;      &lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: x-small;"&gt; searchLocation.Import(stream);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
As you see, adding is not too hard, but deleting is the problem. The DeleteLocationConfiguration method takes the id of a LocationConfiguration object as the parameter. But lo and behold, the Id property is defined as internal.&lt;br /&gt;
&lt;br /&gt;
&lt;img alt="image" border="0" height="366" src="http://lh3.ggpht.com/-9s2GBB5-P14/TgHlSUbUFCI/AAAAAAAAAMY/FiLxfjERhPU/image%25255B2%25255D.png?imgmax=800" style="background-image: none; border-bottom-color: initial; border-bottom-style: initial; border-bottom-width: 0px; border-left-color: initial; border-left-style: initial; border-left-width: 0px; border-right-color: initial; border-right-style: initial; border-right-width: 0px; border-top-color: initial; border-top-style: initial; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="497" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;That means it’s not available for us to delete on. But we’re lucky to use .Net where reflection is possible. Buy using the helper class below we can get the value from the internal property. Note that the code could have used regular reflection, but emitting IL makes more optimized code, and I use this utility class a lot of other places where performance is an issue.&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;&lt;span class="kwrd"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt; DynamicReflectionHelperforObject&amp;lt;V&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;pre class="csharpcode" id="codeSnippet"&gt;{
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;delegate&lt;/span&gt; T GetPropertyFieldDelegate&amp;lt;T&amp;gt;(V obj);

&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; GetPropertyFieldDelegate&amp;lt;C&amp;gt; GetP&amp;lt;C&amp;gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt; memberName)
{
Type v = &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(V);
PropertyInfo pi = v.GetProperty(memberName, BindingFlags.NonPublic | BindingFlags.Instance);
&lt;span class="kwrd"&gt;if&lt;/span&gt; (pi == &lt;span class="kwrd"&gt;null&lt;/span&gt;)
&lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; NullReferenceException(&lt;span class="str"&gt;"No Property or Field"&lt;/span&gt;);

DynamicMethod dm = &lt;span class="kwrd"&gt;new&lt;/span&gt; DynamicMethod(&lt;span class="str"&gt;"GetPropertyorField_"&lt;/span&gt; + memberName, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(C), &lt;span class="kwrd"&gt;new&lt;/span&gt; Type[] { v }, v.Module);
ILGenerator il = dm.GetILGenerator();

il.Emit(OpCodes.Ldarg_0); &lt;span class="rem"&gt;// loaded c, c is the return value&lt;/span&gt;
il.EmitCall(OpCodes.Call, pi.GetGetMethod(&lt;span class="kwrd"&gt;true&lt;/span&gt;), &lt;span class="kwrd"&gt;null&lt;/span&gt;);
il.Emit(OpCodes.Ret);
&lt;span class="kwrd"&gt;return&lt;/span&gt; (GetPropertyFieldDelegate&amp;lt;C&amp;gt;)dm.CreateDelegate(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(GetPropertyFieldDelegate&amp;lt;C&amp;gt;));
}
}&lt;/pre&gt;&lt;br /&gt;
&lt;/div&gt;And to use it pass inn the object type, the property type and the object we want to retrieve the property from:&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre class="csharpcode" id="codeSnippet"&gt;&lt;span class="kwrd"&gt;int&lt;/span&gt; id = Helpers.DynamicReflectionHelperforObject&amp;lt;LocationConfiguration&amp;gt;
.GetProperty&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;(&lt;span class="str"&gt;"Id"&lt;/span&gt;)
.Invoke(frontLocation);
fastQuerySSA.DeleteLocationConfiguration(id);&lt;/pre&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-8186349988760563925?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XxdTsrsW83SGg2HBL_N0RHEa9Ss/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XxdTsrsW83SGg2HBL_N0RHEa9Ss/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XxdTsrsW83SGg2HBL_N0RHEa9Ss/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XxdTsrsW83SGg2HBL_N0RHEa9Ss/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/CWbQ0ohQmfc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/8186349988760563925/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/06/deleting-federated-location-via-api.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/8186349988760563925?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/8186349988760563925?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/CWbQ0ohQmfc/deleting-federated-location-via-api.html" title="Deleting a Federated Location via the API" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-9s2GBB5-P14/TgHlSUbUFCI/AAAAAAAAAMY/FiLxfjERhPU/s72-c/image%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/06/deleting-federated-location-via-api.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EBSHs6cCp7ImA9WhZbGUw.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-7285024266797796692</id><published>2011-06-17T13:39:00.002+02:00</published><updated>2011-06-24T13:40:59.518+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-24T13:40:59.518+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="search" /><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>Making Best Bets available right away</title><content type="html">In SharePoint 2010 if you add a keyword and attach a Best Bet to it, it is usually made available right away. But if your system has a lot to do, then the timer jobs kicking this into production might not run as often as you desire.&lt;br /&gt;
&lt;br /&gt;
This is easily fixed by running the “Prepare query suggestions” timer job. Seems this jobs handles anything to do with synonyms, nicknames and also keywords.&lt;br /&gt;
&lt;br /&gt;
In a SharePoint Management PowerShell window you can start the timer job by issuing&lt;br /&gt;
&lt;br /&gt;
Start-SPTimerJob -Identity "Prepare query suggestions"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-7285024266797796692?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/80Ig73GROup9FpGdIHW__mK-KE4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/80Ig73GROup9FpGdIHW__mK-KE4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/80Ig73GROup9FpGdIHW__mK-KE4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/80Ig73GROup9FpGdIHW__mK-KE4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/syvOiDfk7Js" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/7285024266797796692/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/06/making-best-bets-available-right-away.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/7285024266797796692?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/7285024266797796692?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/syvOiDfk7Js/making-best-bets-available-right-away.html" title="Making Best Bets available right away" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/06/making-best-bets-available-right-away.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUHQXcyeCp7ImA9WhZbEUo.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-1234524451889102062</id><published>2011-06-15T23:42:00.002+02:00</published><updated>2011-06-15T23:43:50.990+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-15T23:43:50.990+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="search" /><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>Clearing items from a specific content source</title><content type="html">On your Search Service Application, that be the standard SharePoint Search or FAST for SharePoint has a link called &lt;strong&gt;Index Reset&lt;/strong&gt; which will clear all the searchable items in your index.&lt;br /&gt;
&lt;br /&gt;
For FAST Search for SharePoint you would have to call &lt;strong&gt;Clear-FASTSearchContentCollection&lt;/strong&gt; on the FS4SP farm as well via PowerShell.&lt;br /&gt;
&lt;br /&gt;
This is all fine if you want to remove everything, but sometimes you may want to only remove parts of the index, say only items from a particular content source like SharePoint or your file server.&lt;br /&gt;
&lt;br /&gt;
&lt;img alt="image" border="0" height="42" src="http://lh3.ggpht.com/-Qm5UPrYIJdA/TfknV4HiyWI/AAAAAAAAAMU/sFC5h8wpRJE/image%25255B6%25255D.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="500" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;The trick to achieve this is to remove the start addresses from a search location, and then re-add them. When you remove a start address from a content source, it triggers a delete mechanism which will remove all items from that particular start address.&lt;br /&gt;
&lt;br /&gt;
Here’s a sample PowerShell script which will remove all items from my File server content source called &lt;strong&gt;File&lt;/strong&gt; residing on my Search Service Application called &lt;strong&gt;FASTContent&lt;/strong&gt;. Probably something to turn into a .ps1 file or a cmdlet.&lt;br /&gt;
&lt;br /&gt;
&lt;div id="codeSnippetWrapper"&gt;&lt;pre class="csharpcode"&gt;$sourceName = &lt;span class="str"&gt;"File"&lt;/span&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;pre class="csharpcode"&gt;$contentSSA = &lt;span class="str"&gt;"FASTContent"&lt;/span&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;pre class="csharpcode"&gt;$source = Get-SPEnterpriseSearchCrawlContentSource -Identity $sourceName -SearchApplication $contentSSA
&lt;/pre&gt;&lt;br /&gt;
&lt;pre class="csharpcode"&gt;$startaddresses = $source.StartAddresses | ForEach-Object { $_.OriginalString }
&lt;/pre&gt;&lt;br /&gt;
&lt;pre class="csharpcode"&gt;$source.StartAddresses.Clear()
&lt;/pre&gt;&lt;br /&gt;
&lt;pre class="csharpcode"&gt;ForEach ($address &lt;span class="kwrd"&gt;in&lt;/span&gt; $startaddresses ){ $source.StartAddresses.Add($address) }&lt;/pre&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-1234524451889102062?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jvYdPhd_ZJDqsPxWbomDZtAEsxw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jvYdPhd_ZJDqsPxWbomDZtAEsxw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jvYdPhd_ZJDqsPxWbomDZtAEsxw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jvYdPhd_ZJDqsPxWbomDZtAEsxw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/BCfwFrw7ekU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/1234524451889102062/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/06/clearing-items-from-specific-content.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/1234524451889102062?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/1234524451889102062?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/BCfwFrw7ekU/clearing-items-from-specific-content.html" title="Clearing items from a specific content source" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-Qm5UPrYIJdA/TfknV4HiyWI/AAAAAAAAAMU/sFC5h8wpRJE/s72-c/image%25255B6%25255D.png?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/06/clearing-items-from-specific-content.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQBRnY9eyp7ImA9WhZUEEk.&quot;"><id>tag:blogger.com,1999:blog-5439950764176009449.post-1390616750743775825</id><published>2011-06-02T21:17:00.003+02:00</published><updated>2011-06-02T21:19:17.863+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-02T21:19:17.863+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="search" /><category scheme="http://www.blogger.com/atom/ns#" term="fast for sharepoint" /><category scheme="http://www.blogger.com/atom/ns#" term="sp2010" /><category scheme="http://www.blogger.com/atom/ns#" term="fs4sp" /><title>DateTime resolution on your SharePoint Search Center hits</title><content type="html">If you use the search center in SharePoint you will notice document dates are listed with year, month and day. What if you want to show hours, minutes and seconds as well for the last modified date?&lt;br /&gt;
&lt;img alt="image" border="0" height="202" src="http://lh5.ggpht.com/-TL9WsD3gExw/Tefhz9eW18I/AAAAAAAAAMA/9_qRmO7UDR0/image%25255B5%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="486" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;Turns out this is harder than you would imagine as the underlying xml is missing the data we need, so changing the xslt will not help.&lt;br /&gt;
&lt;br /&gt;
&lt;img alt="image" border="0" height="288" src="http://lh6.ggpht.com/-7vj5RretPjA/Tefh0ffd9KI/AAAAAAAAAME/7yP5a8dyIq0/image%25255B2%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="510" /&gt;&lt;br /&gt;
&lt;br /&gt;
If I use the FAST Search for SharePoint Query Logger on my FAST server, I see that hours, minutes and seconds are returned, so the question is, where do they disappear?&lt;br /&gt;
&lt;br /&gt;
&lt;img alt="image" border="0" height="135" src="http://lh5.ggpht.com/-fhzAOmmBszA/Tefh075ucMI/AAAAAAAAAMI/oykFnBU-8NU/image%25255B8%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="434" /&gt;&lt;br /&gt;
&lt;br /&gt;
Firing up one of my favorite tools, Reflector, I found the answer in the SharePoint result XML builder, an internal class used to build search result xml - Microsoft.Office.Server.Search.Query.Gateway.XMLBuilder. In the method &lt;strong&gt;GetPropertyValue&lt;/strong&gt; there is a section handling the managed property called &lt;strong&gt;write&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;img alt="image" border="0" height="127" src="http://lh4.ggpht.com/-gTAqukUevd8/Tefh1HkwRBI/AAAAAAAAAMM/dKAzR-TONo8/image%25255B11%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="344" /&gt;&lt;br /&gt;
&lt;br /&gt;
and if we take a closer look at &lt;strong&gt;GetDateTimeValue&lt;/strong&gt; we find the answer.&lt;br /&gt;
&lt;br /&gt;
&lt;img alt="image" border="0" height="157" src="http://lh4.ggpht.com/-4EROv2UyB50/Tefh1jw-z2I/AAAAAAAAAMQ/rmQHr8dEoKA/image%25255B14%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="605" /&gt;&lt;br /&gt;
&lt;br /&gt;
In the last line it formats the date with the &lt;strong&gt;d&lt;/strong&gt; modifier. This stands for short date, and will render a date without hours, seconds and minutes -&lt;a href="http://msdn.microsoft.com/en-us/library/az4se3k1.aspx"&gt;http://msdn.microsoft.com/en-us/library/az4se3k1.aspx&lt;/a&gt;. The &lt;strong&gt;siteCulture&lt;/strong&gt; parameter comes from the search runtime (either the SharePointSearchRuntime or the FASTSearchRuntime, depending on if you are using the built-in search or FAST Search for SharePoint).&lt;br /&gt;
&lt;br /&gt;
My first instinct was to override the formatting of the &lt;strong&gt;d&lt;/strong&gt; modifier for the culture of the running thread. But this will not help as it’s the SSA runtime which executes the query and it is running on a different thread.&lt;br /&gt;
&lt;br /&gt;
Seems your only solution when using the Core Results Web Part is to create a new managed property, and map to it the same crawled properties as is mapped to &lt;strong&gt;write&lt;/strong&gt;. Then use your new managed property instead in the xslt rendering.&lt;br /&gt;
&lt;br /&gt;
If you are using any of the API’s for search, you will get the full date resolution, as the result is not run thru the result XML Builder.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5439950764176009449-1390616750743775825?l=techmikael.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Fd5aKU4_sDS4lKyF36ezFotL-WM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Fd5aKU4_sDS4lKyF36ezFotL-WM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Fd5aKU4_sDS4lKyF36ezFotL-WM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Fd5aKU4_sDS4lKyF36ezFotL-WM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/TechAndMe/~4/k-W4Jdc1IOs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://techmikael.blogspot.com/feeds/1390616750743775825/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://techmikael.blogspot.com/2011/06/datetime-resolution-on-your-sharepoint.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/1390616750743775825?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5439950764176009449/posts/default/1390616750743775825?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechAndMe/~3/k-W4Jdc1IOs/datetime-resolution-on-your-sharepoint.html" title="DateTime resolution on your SharePoint Search Center hits" /><author><name>Mikael Svenson</name><uri>http://www.blogger.com/profile/04135401463188945665</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-TL9WsD3gExw/Tefhz9eW18I/AAAAAAAAAMA/9_qRmO7UDR0/s72-c/image%25255B5%25255D.png?imgmax=800" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://techmikael.blogspot.com/2011/06/datetime-resolution-on-your-sharepoint.html</feedburner:origLink></entry></feed>

