Start using the power

Great! You have made the upgrade to Sitecore 7. Coming with this you would have instantly got nice search within the UI, your old searches will be running on a new version of Lucene and you can start indexing media files. The next natural step is to move any code that is using the existing API over to use the new LINQ based API. This blog post details a process that the development team recommends for getting the high-level features that you should think about to plan your project. This blog is a running blog i.e. we will add more and more details to this over time.

There are multiple different avenues that you could be coming from so we will break up this post into all the different directions. Let's list them first:

  • NEW: You are starting a new site with Sitecore 7 and you have complete control over how you code it.
  • UPGRADE: You are upgrading a site from Sitecore 6.X
  • Advanced Database Crawler: You are upgrading a site that used the Advanced Database crawler
  • Item Buckets Shared Source: You are upgrading a site that used the Item Buckets shared source module

Let's take the first path for this blog post to introduce steps on a clean NEW build.

Preparation and Planning

Get the right advice:

Please read all of these before you start as it will help you make educated decisions.

Design Content Architecture and Data Templates

  • Install your helper tools that are detailed here.
  • Think about when to use Item Buckets.
  • Build data templates and be extra concious of the field types you choose, they can affect the way the data is stored in the indexes in Sitecore 7.
  • If you think that a field will link to many items then use the new Multilist with Search.
  • Think about other datasources outside of Sitecore. Do you need to integrate SharePoint, CRM, Files etc. Now is your time to think if you would like to store in Sitecore or not. You could just store them in indexes as well.
  • URLs? What will they look like in my content tree with the paths I choose?
  • Prepare which fields will be Facets and then determine what Type they should store and if it will scale properly e.g. faceting by 1 Million Tags would not scale very well.

Developer Decisions

  • Here you can use Glass, Synthesis etc. or Sitecore 7 Document Mapper.
  • MVC or Webforms?
  • Think about multi-site and multi-lingual. Your answer to the multi-lingual question will help you identify the provider you should use.
  • SOLR or (here)
  • If using SOLR then watch this and choose an IOC container.
  • High Read or High Write environment for indexing? Which ever you choose will take you down different configuration settings for SOLR or
  • Watch this hangout, and get code from here to determine which Analyzers your fields should use. There will be times when you will need to store the same field many times with different Analyzers, so just be aware of this.
  • Decide if you need to shard your indexes. Do you expect massive content growth? Can you logically separate parts of your content into different indexes?
  • If you want to go with the inbuilt Sitecore Document Mapper then get out Visual Studio and start building POCO's that correlate to your data templates. If you are wondering what types you should use for what field types in Sitecore then look no further than your Sitecore.ContentSearch.Lucene.Indexes.DefaultConfiguration.config as we have already mapped all field types to a .net Type for you.
  • Switch on "Stored" for any field type or field that you want the Document Mapper to hydrate when it runs a LINQ query.

Getting Comfortable

  • Get out LINQPad or the LinqScratchPad before you start any hardcore coding. Get used to the LINQ queries, get used to how to do common things like finding exact matches, contains, startswith queries. Use your own types for this instead of the default Type on the LinqScratchPad. Make sure you share these as GISTS so that other developers can use them to get up to speed as well. A new feature in Sitecore Update 1 allows you to run saved GISTS directly in your environment.
  • Use the FillDB.aspx page to test your queries over a lot of items. In this way you know that when you actually scale to that much content that your queries are still efficient.

Open Visual Studio

  • The new Sitecore.ContentSearch API is extremely easy to Unit Test so make sure you setup your Unit Test Projects with your favourite Unit Testing Tools. If you want an example then go here.
  • It goes without saying that you should setup a proper build and deployment process but we thought we would mention it anyway.
  • Look into sharing open contexts on a page with this.
  • Decouple your code from your content and use datasources.

Build Process

  • FillDB is powershell enabled as of Update 2, so you can use it to automate load testing on the index


Performance Tuning (1, 2, 3, 4)

When to invalidate Cache

Change the default configuration! - We ship with configuration that would be settings for an average size Sitecore website but this doesn't mean it is suited towards your site. View the config files and determine if you need to change some settings.

Preparing the UI for clients

  • Known Hits
  • Context Views
  • Context Data
  • Dynamic Quick Actions
  • Quick Actions
  • Set Facets Per Item Section
  • Default and Persistent Queries
  • Enable Different Views
  • Enable Search Operations
  • Setup a tag repository (Think about creating a dictionary of items in your content tree for tagging purposes.

The addition of search tabs may seem insignificant but they actually open up brand new ways of working with content. It is at this stage that you should think about how your clients would like to create their content. Do they create them all in one giant Item Bucket? Do they clone it out of the Item Bucket into their site structure? Do you start using Quick Actions instead of the Workbox? Do you setup saved searches for your users?

Post thoughts

  • What happens when I move from a non-bucket to a bucket or vice-versa?
  • To rebuild or not to rebuild?

Preparing the build for the marketers and authors

  • Setting up the defaults boosts, boosting rules etc.
  • Introducing Bulk Operations
  • Training on Datasources

Running into problems?

  • Tweet #Sitecore7 with a suggested Hangout Topic, we are happy to have a hangout topic on anything.
  • Contact Support if symptoms persist.
- Dev Team