Thursday, April 21, 2011

Multi-Valued Managed Properties as Refiners not working

Topic: SharePoint 2010, FAST Search for SharePoint 2010 (FS4SP), Multi-valued, crawled properties, managed properties, Facetted Navigation, Refiners
Subject:  Missing Multi-valued properties
Problem: I used a multi-valued property as a Refiner but the values do not show up.  What happened to the values?
Response: Both SharePoint and FAST Search Query have an issue when it comes to using multi-valued properties as refiners.  The issue is when configuring the Managed property. Changing the configuration will somewhat resolved the issue in FAST Search (with caveats) but still doesn’t resolve the issue in SharePoint Search.  Knowing this problem exists, but late to blog, I tested against the SharePoint FEB 11 CU and the problem has not be corrected.

Solution\Example:
This example uses both SharePoint search and FS4SP search as the issue occurs in both.  I am using a custom protocol handler and custom crawler but the issue can be replicated by setting up a “Document Library” (see Side Note at end of Blog if using Document Library)  and modifying the library to have a lookup column which allows the selection of multiple values.  I choose to do it against both indexes.
**Note this is a pretty advanced example which assumes previous knowledge of Crawled/Managed Properties and Refiners.   I will not go into detail regarding setting up these features but if this is the problem you are having you will already possess these skills.

1.      Setup a crawled property in either your FAST Query or SharePoint Search Service Application
a.      Name the crawled property “MULTIVALUEPROP”
                                                    i.     Check the “Include in Index” option
                                                   ii.     The “Include in Index” option will include the values in the physical index which is important when searching for results in this example.

2.      Create a Managed Property
a.      Name “MULTIVALUEPROP”
b.      Mapped to the crawled property from Step #1
c.      Check the radio button option “Include values from a single crawled property based on the order specified”
d.      Check the option to allow this property to be used as a Refiner




3.      Modify the Search Center to use the managed property “MULTIVALUEPROP” as a refiner

4.      Setup a crawl from the SSA to crawl a single item in which the “MULTIVALUE_PROP” crawled property will be populated with the values “VALUE1”,”VALUE2”,”VALUE3”

5.      Open the Search Center
a.      Search for the Term “VALUE1”
b.      Search for the Term “VALUE2”
c.      Search for the Term “VALUE3”

6.      In all 3 scenarios the results will be returned against both SharePoint Search and FAST Search but only the 3rd property value “VALUE3” will appear as a Refiner.
   

7.      It turns out that the option “Include values from a single crawled property based on the order specified” does not include “VALUES” but returns only one “VALUE” (VALUE3)

8.      All three searches from Step #5 return matches to the item crawled so we know that the indexer handled the multi-value correctly. (Which is why use used the “Include in Index” option on the crawled property definition)

9.      If you setup a “Spy Stage” in FAST at the end of the FS4SP pipeline. (See my blog on “spy Stage in the FAST Search (FS4SP) pipeline” (http://fs4sp.blogspot.com/2011/04/spy-stage-in-fast-search-for-sharepoint_05.html )  you will see the multi-value crawled property is set correctly.

#### ATTRIBUTE 2014D5E9-5DCB-43D0-BCC8-090D134A29F2:MULTIVALUE_PROP:31 <type 'list'>: ['VALUE3', 'VALUE2', 'VALUE1']

10.   Edit the Managed Property and change the include option to:
a.      “Include values from all crawled properties mapped”

11.   Re-Crawl the Content

12.   Research for the Result from Step #5

13.   For the FAST Search Center changing the option corrected the issue.
            
14.   For the SharePoint Search Center changing the option got the result closer but still wrong

             
Side Note: I used a custom crawler in this example.  If you use a Document Library you will see slightly different results.  FAST will act the same with the exception that the 1st Value appears on the first test instead of the last value.  In SharePoint, all the properties will appear in either scenario but both will appear as "VALUE1;VALUE2;VALUE3" when attempting to use the Managed Property as a refiner.
Conclusion: The multi-value property works as long as you do not want to use this value as a Refiner. The option “Include values from single crawled property” does not work.  Changing the option will work for FS4SP as long as the managed property doesn’t have multiple crawled properties mapped which contain multiple values and you really only want the values of the 1st crawled property populated.   For SharePoint there isn’t such luck.  Even changing the option does not produce the desired results.  If you are writing your own crawler you are left with expanding each individual multi-value into a separate crawled property and then mapping all those crawled properties to a Managed Property.

KORITFW

3 comments:

  1. Hi Eric,
    Thanks for this post. I was wondering where my multivalued properties were at! Do you know if this issue has been resolved with the more recent CUs (Since April 2011)?

    Thanks for the great post!

    ReplyDelete
  2. Eric,

    I'm facing the same problem with SharePoint search

    you have mentioned about "If you are writing your own crawler you are left with expanding each individual multi-value into a separate crawled property and then mapping all those crawled properties to a Managed Property"

    Is that feasible, if so how to implement this?

    Thanks
    Sangi

    ReplyDelete
  3. Very useful article. Thanks for taking time and put together great info that you had defined. for expatriot Australia mortgage click here

    ReplyDelete