As I was playing around with the new geolocation column of SharePoint 2013, I wanted to try to migrate my geosearch solution for Fast Search for SharePoint 2010 to SharePoint 2013. The addition of the geolocation column was opening up some interesting possibilities. Potentially, this solution would add some (near) out of the box geolocation solutions.
After adding the geolocation column, adding some data to the last, I started to crawl the content. For some reason, the geolocation crawled property didn’t show up. And the reason why was logged to the Diagnostic log:
07/22/2012 21:14:27.12 mssdmn.exe (0x22BC) 0x1088 SharePoint Server Search Connectors:SharePoint dvs3 High Unknown datatype Geolocation [sts3util.cxx:6498] search\native\gather\protocols\sts3\sts3util.cxx
Apparently, the logic to index a geolocation column, hasn’t been implemented yet. Let’s hope it will be implemented when SharePoint 2013 will get released!
Expect some blogposts with a workaround for this issue soonish 😀
Today I was playing with the new geo location column. I added the Bing maps key, created a custom list and added the geo location column via code to that list. Upon submitting a new listitem, I received an error, mentioning that a component was not installed, to be able to use geolocation. This is a strange error, because I was able to add the column programmatically, while adding content to the list, is not possible. After checking the Diagnostic log, I noticed the following error:
A required component for using a geolocation field is not installed: Microsoft SQL Server System CLR Types
This remembered me that I had read somewhere (this means: It’s not in the geo location MSDN documentation.It’s written in the documenation on mobile apps and geolocation) that the Sql Server System CLR Types needed to be installed on the Web Front End servers. The package that needs to be installed is called “SqlSysClrTypes.msi”, and depending on the version of SQL that is used, one of the following feature pack needs to be installed:
Sql Server 2008 R2 SP1 Feature Pack
SQL Server 2012 Feature Pack
After the installation, I still couldn’t add any items to the list. An IIS Reset didnt work for me but a reboot did the trick.
Update: I found the place where I read about the installation package
This is the third and last part of a series of blogposts about GeoSearch with Fast Search for SharePoint. I recently held some presentations about extending the power of Fast (on DIWUG and the Dutch TechDays 2012) and one of the subjects that I talked about was on how to search for locations, sort on distances etcetera. The recording of my sessions are available on Channel 9 in dutch.
This is the first part of a series of blogposts about GeoSearch with Fast Search for SharePoint. I recently held some presentations about extending the power of Fast (on DIWUG and the Dutch TechDays 2012) and one of the subjects that I talked about was on how to search for locations, sort on distances etcetera. The recording of my sessions will be made available on Channel 9.
Why using Fast search for SharePoint 2010 for this purpose?
It’s possible to compute distances between locations in a lot different ways. For example, address can be queried against SQL Server (if the correct data is available), or those addresses can be used in conjunction with the Bing Geocode services. A custom webpart with logic to query one of those services with the users/objects current location and all list items with location information takes little time, but performance issues can pop up in no time. how is the performance when there are 200 items in a list? and 2000? 20000? maybe 200000? Surely, I can imagine that there are some smart solutions to send 200000 locations to the geocode service and receive them back, but remember: how did you extract that information from a sharepoint list? That takes quite some time. It is even getting harder when data comes from several lists, not even thought about data from several site collections, external data (BCS is an option here btw) or, location information that resides insidedocument.