in

Unleashing SharePoint's Potential for the Real World

  • Official Release of SPAdvancedSearch v1.0

    Alright... so I've finally completed the official release of my CodePlex project (SPAdvancedSearch).  It will revolutionize searching within SharePoint.. well, not exactly.  But it is pretty sweet IMHO.  The underlying architecture is interesting and is somewhat described in the documentation on the site.  I've had the vision for quite some time, but I haven't had the opportunity to implement it.  The general pattern that I took is pretty basic...  Taking more complex web part configuration settings (above and beyond the traditional data types supported OOTB) and using custom XML serialization to persist them in the web part.  I've include a synopsis of the SPAdvancedSearch project below.  

    SPAdvancedSearch

    SPAdvancedSearch Goals

    The goal of the SPAdvancedSearch project is to improve the ability for end-users to perform advanced property-based searches in SharePoint without requiring knowledge of the property-based syntax (i.e. DocumentCategory:Proposal, etc.).  For quite some time I wished that the user profile search in SharePoint was available for finding content other than user profiles.  This project seeks to bridge that gap.

    SPAdvancedSearch Overview

    Since the out-of-the-box search input provides many configuration options, I decided to derive from Microsoft’s Microsoft.SharePoint.Portal.WebControls.SearchBoxEx web part to inherit the “goodness” it provides.  The derived web part “intercepts” the advanced search link by providing an expand / collapse panel with flexible managed property advanced search options.  In addition to providing a basic text box input UI, the advanced search web part allows for configuring “Choice” values similar to SharePoint’s Choice field type.  Future enhancements and considerations are included later in this document.  One interesting note to point out is that this control does not alter the way that the OOTB SharePoint search control performs queries.  Instead, it makes use of the same QueryString driven approach (i.e. results.aspx?k=Some Key Words Here).

     

    Check it out: http://www.codeplex.com/SPAdvancedSearch.

     

  • Version 0.5 of SPAdvancedSearch

    Have you ever wondered why the OOTB MOSS search box didn't include the same functionality that the people search provides?  If you haven't noticed, the People Search box provides an in-page advanced search experience to easily search by managed properties (i.e. Department, Location, etc.).  I've recreated this functionality for the using a CEWP and JavaScript; however, that's not necessarily a scalable solution. As part of my preparation for the upcoming SharePoint Connections conference in Las Vegas, I've started a solution for this on CodePlex.  It's functional, but I have more work to do...

    Advanced Search

     

     

     

     

     

    http://www.codeplex.com/SPAdvancedSearch

    The code and general information is available; however, I haven't created an officially released WSP.  Here are some highlights...

    This preview release includes:
    *Ability to define SharePoint Managed Properties in the advanced search pane using xml

    Version 1.0 will be released in mid-to-late October and will include:
    *Custom toolpane for defining managed properties (no more xml).
    *Automatic display of the advanced search panel via configuration on the toolpane
    *Automatic display of the advanced search panel on results pages when a query has been executed
    *Removal of managed properties used in the search from the "keyword" input box to improve user experience

    Version 1.5 is planned to include these additional features:
    *Ability to define a choice list as a value type in the advanced search panel
    *Ability to define a lookup list as a value type in the advanced search panel (limited to SharePoint lists)

    The advanced search web part derives from the OOTB MOSS Search Box web part so all of the base functionality is available. Once placed on a search entry and / or results page, the web part can be configured to display managed properties of your choice.

    http://www.codeplex.com/SPAdvancedSearch

     

  • Initial Release of the SharePoint Search Administrator Toolkit

    While preparing for my upcoming SharePoint Connections presentations in Las Vegas, I decided to release some SharePoint Search solutions to CodePlex.  My first release is an extension to the MOSS Shared Service Provider that provides administrators with the ability to configure managed property weights and length normalization, carefully modify standard MOSS ranking parameters to tune relevance, and execute the ranking update process.  I know... it's not that exciting.  There are other options for configuring these relevance settings in MOSS (EXEs and custom STSADM extensions); however, this is the first option that I have seen that is fully integrated into the SSP.  Check it out and let me know what you think...

    http://www.codeplex.com/SPSearchAdminToolkit

    Additional information and screen shots are available on CodePlex... 

    So what's next on my plate for release?  Since someone already created a search as you type feature on CodePlex, my next project will be a "fancy" advanced search extension that provides an advanced search UI similar to the MOSS people search advanced search input.

  • Crawling an Individual Document Library

    Have you ever wanted to crawl a specific document library in a SharePoint site?  Have you tried and instead you successfully crawled the entire portal or site collection?  I've been told that this can be accomplished by crawling the library by its UNC path; however, that still doesn't work.

    A customer I work with had a technical requirement to have multiple portal implementations across the US.  Each portal implementation had a specific document library that contained documents and metadata.  The main portal in this scenario was responsible for crawling the individual document libraries in each portal implementation; however, we always ran into issues with the crawler "jumping outside" of the intended crawl scope.  Sure, we could add include/exclude paths until our eyes bled, but that process never really seems to work as one would expect.  We opened a ticket with Microsoft and we're presented with an approach that actually works. 

    1.  Identify the underlying document library's "site" or "area" and use the crawl logs to find the URL that SharePoint used to crawl the content.  This is a painful process; however, it can be made easier by searching the gatherer logs that are stored in the portal's underlying _Serv database.  The URL you should look for will have the form: sts2://<servername>/webid=000/listid={listid}.  To this date I have no clue where the web id comes from since web ids are typically GUIDs.  The list id on the other hand is a GUID that can be easy to ascertain by looking at querystrings on the portal site.  Regardless, it is much easier to find this URL by querying the gather log tables in the _Serv database.

    2.  Once the exact URL is identified, you can add an Exchange Public Folder content source that points to aforementioned URL.  Configure the content source to crawl as desired and start the crawl.  Assuming the crawl account you are using has access to the SharePoint site, you're in business.

    By following these two steps, you can crawl individual document libraries and/or lists in SharePoint.  This is very powerful for content aggregation across an enterprise that has disparate stores for documents.  Assuming the documents have like metadata, an advanced search scenario makes this even more interesting.  Since each underlying URL that was identified in 1 and 2 above is a content source, you can create a scope that includes each content source.  With some custom programming, a SharePoint developer can create an interface for business users to choose which content source or sources they want to search as well as providing search inputs to search for documents by metadata in an advanced search.

    An example of this scenario is as follows:  Joe User wants to find all documents in Portal A's library, Portal C's library, but not Portal B's library with department = HR and document type = specification and a free text search for documents containing the word SharePoint.

    IMO, this is a powerful customization.

    Posted Apr 29 2006, 11:17 AM by emau with 2 comment(s)
    Filed under:
  • Hello

    Well... after several months or maybe even several years I am posting to my blog.  I've got a couple ideas on what I can blog about during the next couple of weeks.

    1. Demystifying Ghosting and Unghosting -- IMO this will be a hot topic with the upcoming release of MOS 2007.  Raymond Mitchell and I made some interesting discoveries while working at a customer site this week.  I'm sure there will be a number of posts that the IW Team will have in this area related to migration from SharePoint v2 (WSS and SPS) to MOS 2007.
    2. Demystifying Users Security, Profiles, Members, etc., etc. in SPS v2 -- SharePoint v2 can be quite confusing when looking at all the place a "User" record exists.  This isn't very exciting, but it needs some clarification.  Plus, I like to use the term "Demystifying" in the topic...
    3. Creating a Framework for Accessing SharePoint List Data via Web Services -- Who knows if it is even necessary, but I think it's cool.  Plus, it's using a framework similar to one I've used on other non-SharePoint projects.  It's basically using the Data Mapper approach to map data coming from a SharePoint web service to a Domain Layer.
    4. General Consulting Topics -- I've been in the consulting world for over 7 years now.  I've accumulated some thoughts / opinions on what I believe make a good -- no *great --consultant.

    *Side Note: While driving home, I realized saying great in the item above may sound a little arrogant. I'm definitely not saying I'm a great consultant... 

    There it is.  My first post.  Jake - I wonder when you'll see this.  You'll have to give me some feedback.  Am I doing the link thing properly?

Inetium, LLC. Disclaimer