none
Hierarchical refiner RRS feed

  • Question

  • Hello experts!

    How can I configure an hierarchical refiner?

    Say I have a managed property with name "exampleprop". Each document has a value in this field on this format: "department|section|group".

    A couple of example documents:
    DocumentA.exampleprop = "depA/secA/groC"
    DocumentB.exampleprop = "depA/secA"
    DocumentC.exampleprop = "depA/secA/groD"
    DocumentD.exampleprop = "depB/secA"

    I would like to get refiners returned for how many documents are in the different departments, sections and groups. For a search that returns all documents I would like to see a refiner for depA with a count of 3, and the same for depA/secA, the depA/secA/groC refiner should have a count of 1.

    It would also be great if in a result these refiners were organized in such a way that it would be easy to display them in an hierarchical fashion, like this:

     depA(3)
     +secA(3)
     +groC(1)
     +groD(1)
     depB(1)
    

    Do I have to split up my values and insert the Unicode Character 'PARAGRAPH SEPARATOR' (U+2029), and then parse the values of the returned refieners in order to be able to display them correctly? Or can I achieve this using a Taxonomy from the Managed Metadata as a data for a field in my User Profiles (the documents I am referring to are User Profiles in Sharepoint)? Any other suggestions?

    I currently have a refiner based on a Managed Metadata field in the User Profile, but selecting depA will not give me the documents fro depA/secA - it will only give me the documents in depA, nor will it display the refiner as an expandable tree. I have the same data in an alternate field on the format described above, but it looks like there is no way to use the property values as refiner selection, it has to be the token.

    Best regards Gunnar Braaten



    Wednesday, August 3, 2011 12:09 PM

Answers

  • To have the taxonomy fields populated not just with end node value, but with the whole path, you need to go into the library settings, the metadata field column and make sure that you have “Display the entire path to the term in the field” checked. This will tag item with the whole hierarchy


    SharePoint MVP, Microsoft VTSP, http://www.arcovis.com
    Monday, August 8, 2011 11:27 PM
  • Thanks Natalya,

    Unfortunately this does not help me. I am crawling user profiles, and the managed managed property in question is a user profile property.

    The “Display the entire path to the term in the field” option is only available for fields/columns in content types, not in user profiles.

    If there is no configuration alternative I have missed, it looks to me like the conclusion here is that a hierarchical refiner is not available out of the box for user profiles. Even though the property is hierarchical in the first place.

    Regards Gunnar Braaten

     

    • Marked as answer by Gunnar Braaten Wednesday, September 21, 2011 12:41 PM
    Wednesday, September 21, 2011 12:28 PM

All replies

  • Hi Gunnar

     

    I discussed this with one of my colleagues.  We thought that this could be accomplished using the Pipeline Extensibility stage on the back end, and some XSL Front end code

     

    You could code your stage so that there is a separate entity in each property resulting in their being separate values for each portion.  For the example documents that you provided:

    DocumentA.exampleprop = "depA/secA/groC"
    DocumentB.exampleprop = "depA/secA"
    DocumentC.exampleprop = "depA/secA/groD"
    DocumentD.exampleprop = "depB/secA"

     

    Using the Unicode Character 'PARAGRAPH SEPARATOR' (U+2029) as the multi-value <separator> we would want the output format to look like this:

    depA<separator>depA/secA<separator>depA/secA/groC

    depA<separator>depA/secA

    depA<separator>depA/secA<separator>depA/secA/groD

    depB<separator>depB/secA

     

    On the front end, to display the hierarchy the Refinement Panel’s XSL will have to be customized, and the Filter Category Definition must be customized to return the results for this refiner in alphabetical order (SortBy="name").

     

    Try this out and let us know your results.

     

    Thanks!

    Rob Vazzana | Microsoft | Enterprise Search Group | Sr Support Escalation Engineer | http://www.microsoft.com/enterprisesearch

    • Proposed as answer by Rob Va - MSFT Thursday, August 4, 2011 8:37 PM
    • Unproposed as answer by Gunnar Braaten Friday, August 5, 2011 12:30 PM
    Thursday, August 4, 2011 8:37 PM
  • Thank you Rob!

    Yes, I was thinking along those lines myself. I believe that will work.

    But I was hoping that I could do this through Microsoft.Office.Server.Search.WebControls.TaxonomyFilterGenerator or another way using only configuration. I can have this value available in a Managed Metadata Property in my data source.

    Since this property is a taxonomy I am puzzled that you can not achieve this out of the box. This is after all a very intuitive way to treat a taxonomy.

    It looks to me, that when you crawl a Managed Metadata Property, only the node itself is added to the document. The hierarchy above is discarded. And that there is no way to change this behaviour by configuration. Can you confirm this? And is there no way to create such a taxonomy refiner as I am looking for just using configuration and avoiding Pipeline Extensibility?

    Just to clarify: I have no problem with your approach, I have indeed seen others suggest it. I just want to learn more about what is possible OOB.

    Best regards Gunnar

    Friday, August 5, 2011 12:29 PM
  • To have the taxonomy fields populated not just with end node value, but with the whole path, you need to go into the library settings, the metadata field column and make sure that you have “Display the entire path to the term in the field” checked. This will tag item with the whole hierarchy


    SharePoint MVP, Microsoft VTSP, http://www.arcovis.com
    Monday, August 8, 2011 11:27 PM
  • To have the taxonomy fields populated not just with end node value, but with the whole path, you need to go into the library settings, the metadata field column and make sure that you have “Display the entire path to the term in the field” checked. This will tag item with the whole hierarchy


    SharePoint MVP, Microsoft VTSP, http://www.arcovis.com

    Hi Natalya,

    Will it then be possible to display separately in the refiner?  And based on the example above, selecting DepA as the refiner will return 3 documents?

    Pretty new to FAST, trying to grasp the idea :)

    Cheers,

    Steve

    Tuesday, August 23, 2011 7:26 PM
  • Thanks Natalya,

    Unfortunately this does not help me. I am crawling user profiles, and the managed managed property in question is a user profile property.

    The “Display the entire path to the term in the field” option is only available for fields/columns in content types, not in user profiles.

    If there is no configuration alternative I have missed, it looks to me like the conclusion here is that a hierarchical refiner is not available out of the box for user profiles. Even though the property is hierarchical in the first place.

    Regards Gunnar Braaten

     

    • Marked as answer by Gunnar Braaten Wednesday, September 21, 2011 12:41 PM
    Wednesday, September 21, 2011 12:28 PM
  • Hi Gunnar,

     

    You are right, that there is no out of the box method to do this, but using the Pipeline Extensibility stage on the back end, and some XSL Front end code should allow you to accomplish this.

     

    Good luck!

    Rob Vazzana | Sr Support Escalation Engineer | US Customer Service & Support

    Customer Service & Support                          Microsoft | Services

    Wednesday, September 21, 2011 4:25 PM
  • Hi Rob,

    so is there any oob soltuion to implement a hierarchical refiner? Not for the user profile just for the normal content.

    It would be good to know if the only way to build upa hierarchical refiner is to use the Pipeline Extensibility stage as you suggest for the user profiles..

    Thanks

    M.

    Wednesday, July 25, 2012 9:07 AM
  • Hi Masaniello,

    Unfortunately, there is no out of the box method to accomplish this, and the way I would recommend going about this would be to utilize the Pipeline Extensibility stage on the back end, along with the XSL Front end code.

    Thanks, and let us know how it goes!

    Rob Vazzana | Sr Support Escalation Engineer | US Customer Service & Support

    Customer Service & Support                         Microsoft| Services

    Wednesday, August 1, 2012 12:36 PM
  • Hello Mr. Masaniello,

    the TermTree Refiner Webpart arranges the refiner-terms in a tree (similar to the tree control in the term manager).

    An evaluation copy is available here: http://www.diqa-pm.de/en/Semantic_Search_Webparts

    Regards

    Daniel

    Screenshot of the TermTree Refiner Webpart

    Wednesday, March 15, 2017 4:54 PM