TfsGiggle is a search engine where source code content, changeset id/committer/comment and workitem id and title are indexed and searchable.

The engine in TfsGiggle is a Windows service. When the service starts it will subscribe to Tfs checkin events, and whenever a checkin happens TfsGiggle will be notified by Tfs about the checkin. The changeset-id specified in the checkin xml is put in a persisted
queue and TfsGiggle will start iterating the files in the changeset adding files, changeset-info and any associated workitems to the index.

Users can search from Visual Studio 2010 (with the VSTS extension) on source code contents, changeset id/committer/committer, workitem id/title and modified (checkin) date. Path is also indexed, but may require more Lucene query syntax magic, because the team
project collection guid are part of the document key (team project collection:path).

Installing TfsGiggle
TfsGiggle comes with a installer, so setup should be relatively easy :-)

TfsGiggle has two components, a Windows service and a Visual Studio 2010 plugin. Installing TfsGiggle will initially setup the service (further configuration is needed) and place the plugin in the TfsGiggle installation folder.

The configuration tool will enable you to tell TfsGiggle what Tfs you want it to connect to, and what account you want to use for the service. The service needs permission to write to the Tfs registry, setup the Checkin subscription and read the changesets/files
and workitems it receives.

Please note that users could be presented for files/changesets/workitems they do not have access to, as the artifacts are opened by the users themselves, but indexed by the service account.

Using TfsGiggle with a VSTS Powershell console, e.g. Power Console
- Open a Power Console and write as shown below:

If you can't find the TfsGiggle.Search.dll, I recommend using Everything Search from voidtools to find it. Awesome tool.

Adding an existing changeset to the index
The function AddChangeset has been added and is available in the PowerShellClient class. It takes a team project collection id which is a guid and a changeset id. Getting the team project collection id can be lengthy; fortunately for you it is shown
in the image below how to do that and how to call the function.