Wednesday, November 19, 2014

Black Market GUID’s

image

I’m currently sitting in the speaker room for SharePoint Connect 2014 in Amsterdam and somehow we got into talking about GUID’s. If you scour the interwebs you will find numerous sites offering to generate a unique GUID for you. There is even fraud sites where you can register and reserve GUID’s.

But what I did learn is that if you really want a truly unique GUID, one to keep and use all to yourself, one which will trump any other equal GUID held by someone else, then you have to go to the BLACK MARKET.

In every major city there are people dealing with black market GUID’s. They are truly unique and apparently of great quality. They have even survived the recent economic crises without so much as a dent or lost bit. I was lucky enough to buy one for my last euro’s second hand at the conference, and if everything goes my way I was told I will get the number for a local dealer in Oslo -  so as to scratch my daily needs for fresh GUID’s.

Unfortunately I cannot reveal the identity of the person selling it to me – but seems these black market dealers show up at larger conferences to hook more consumers of GUID’s.

Tuesday, November 18, 2014

Office Video is Live

Office Video just went live today November 11th, 2014. First they launched the Delve portal, now the Office 365 Video portal. Both driven by search. What’s next?

Getting-Started-1.jpg

I have had the fortune to test out the preview and have with my colleague Andreas written a guide to get you started planning this new awesome feature. Head over to Getting started with Office 365 Video to read all about it and also check out Office 365 Video Explained for some good insight into the platform.

Also check the official blog post for an introduction.

Tuesday, November 11, 2014

Tired of getting AllItems.aspx hits in your results?

If you append -contentclass:STS_List_* to your query template, they will all be excluded. In effect all list landing pages will be removed including:

  • AllItems.aspx
  • AllPages.aspx
  • AllPosts.aspx
  • AllCategories.aspx
  • Calendar.aspx
  • Overview.aspx

If you want to find all types excluded use the SharePoint 2013 Query Tool from Codeplex and issue the following query.

  • Row limit: 100 (or some high number)
  • Query Text: contentclass:STS_List_*
  • Collapse Spec: contentclass

The collapse specification ensures you only get one result per unique value.

Monday, November 10, 2014

How to: Make sure User Profile properties are free/full-text searchable

You get a requirement to add a new property called FavoriteColor to the user profile application, which you want searchable on the people search page.

First step is to create the property and ensure it will participate in search by checking the following two settings.


Once created, you fill it with values in your profiles, you wait for a crawl so that the crawled property People:FavoriteColor shows up, you create a new managed property named FavoriteColor, map your crawled property to it, fire off a full crawl for people, head over to people search page and type your favorite color.

Nothing shows!

However, if you type FavoriteColor:color, you get results.

I’ve gotten this question four or five times now, so thought I’d write it up.

The solution is as hard as it is easy. When you create a new managed property, it is by default added to the Default full-text index, not the PeopleIdx full-text index. The full text-index is what is used when you perform a free text query (as apposed to a property query). When querying for people you have to make sure your managed property is in the PeopleIdx.

On the managed property settings page, click the  Advanced Searchable Settings button, and pick PeopleIdx from the dropdown.

image

Next up perform a new full-crawl of the UPA, and it should all work! See https://www.techmikael.com/2014/12/how-to-trigger-re-indexing-of-user.html for how to re-index SPO user profiles, or take a look at the New-PnPUPABulkImportJob cmdlet.

You may also map the crawled property to the managed property ContentsHidden which is already set to be included in the PeopleIdx.

If you are curious what the FullTextIndex1/2/3 are, just stay away from them and don’t give it a second thought. They could in theory be useful, but when moving from FAST Search for SharePoint to 2013, some query logic was forgotten, so they are all but useless (known issue by the product team, and a ticket has been filed and archived). I might do a write up on that later – but not too many would be interested in it.

Wednesday, November 5, 2014

You should use exponential notation when writing XRANK queries


I have previously mentioned a problem using decimal numbers on XRANK statements in my Freshness Boost post. The problem is that the decimal separator used differs on your locale.
For example in Norwegian the character used is , (comma) while in English the character used is . (punctuation). The issue arises when a query rules is written using one locale, and being used on a query in a different locale.
Say I have a query rule with the following XRANK statement where I use . as the decimal separator
{searchterms} XRANK(cb=0.5) title:test
If a user has their SharePoint locale or browser settings set to Norwegian, then the query will fail, giving you an error message that search didn’t understand the query. The reason for the error is that the query framework will use .Net to parse the number with Double.Parse(), and this function is culture sensitive when parsing, and the culture used is based on the users locale settings.

The solution, as I have implemented in the Freshness Boost Generator, is to instead use exponential notation when writing the numbers. This means 0.5 is written as 5E-1 and 0.25 would be 25E-2. The number behind the E character is the number of decimal places to move to the left. This ensures that parsing the number always work, regardless of the locale used.
Rewriting the above query you end up with
{searchterms} XRANK(cb=5E-1) title:test
As a conclusion you should always use exponential notation when writing decimal numbers in an XRANK statement to ensure it will work across different locale settings.