Showing posts with label Mondosoft. Show all posts
Showing posts with label Mondosoft. Show all posts

Tuesday, April 10, 2007

Looking for New Adventures

It's been a wonderful easter, where I didn't get any of the programming projects done, that I had hoped I'd get done.
But no worries... My employement situation had an interesting shift today which means that I now will have a lot of free time to blog, program my personal pet projects and write a good CV.

This also means that in a while I might be tempted by interesting job-offers. Here's a short list of some of the things I'm looking for in a company:
  • Interesting work! This is by far the most important bullet. I love to do research and explore cutting edge technologies. But I might want to avoid those "maintain this old-fashioned asp based finance system" jobs.
  • Innovation, Innovation, Innovation! I have a lot of creativity and I want to use it. I want to be in a company that has room for my ideas, and that isn't so big that it's forgotten how to be innovative.
  • ISV. Independent software vendor sounds really good to me.. I don't feel like making those big consultancy bucks anyway. It's nice to work on a product suite where you have a lot of co-influence on the shape of the product, instead of a lot of small projects with angry customers barking at you all the time. But of course, if the right offer appears I might consider it anyway.
  • And of course: friendly colleagues, good atmosphere, right salary, benefits, education, etc. is also very(!) important.
Feel free to contact me with interesting offers.
I'll post a CV, when I have one ready (havn't used it for the last 6½ years, so it probably needs a small update).

Friday, March 16, 2007

MondoSearch Result Authentication

A very typical request I often hear from customers and partners is the ability to return only the results that the current user is allowed to see. This desire is very natural, but can often present quite a challenge to 3rd party search engines like MondoSearch. The problem is that it varies a lot from each individual setup how authorization works, and hence no general solution can be made. We can only deliver specific solutions of authorization to specific systems (like we have done for EPiServer or Sitecore) or provide general toolkits/examples that makes it easier to custom-build an integration.
The problem with authenticated problems can really be divided into two sub problems:

  • Indexing secure content
  • Searching in secure content
Indexing isn't that big of a problem. There's many ways to make that content available to the search engine. MondoSearch has built-in support for basic-authorization, challenge-response (integrated authorization) and forms log in, just as well as it's quite easy in many CMS systems to override the security if the client originates from a specific IP, or has a specific HTTP Request setting. Generally we see only very few problems in actually indexing the content. The only thing that can be tricky is when the content on the individual pages vary based on who is logged in. In order to handle that, would require the Search Engine to index the same URL, as all the different users that can access it. Luckily pages with user-dependent contents are typically portal pages that are not all that interesting to index. The articles, documents and database content that's interesting to index are not a problem.

Searching in Secure Content is really the main challenge when it comes to authenticated contents. Even though security for the individual pages typically is checked when you try to access a page, it can still be quite revealing when the title (and perhaps description) of a page is displayed on the result page. In fact, to be totally safe, a user who doesn't have access to certain documents must not even know of their existence from the result page! (Suppose I searched for "invasion plan Iran" on Pentagon's website and was told that there were 10.000 documents I that matched the phrase, but none I was allowed to see).
In order to achieve this there's generally three approaches:
  • Authentication by filtering. Store access rights when indexing the documents and use them in the search
  • Authentication by exclusion. When performing a search, manually check that the current user has permission to see each of the results, before returning it.
  • Rules based authentication. Where a number of specific filters is defined for each user-group.
In general I prefer to use Filtering to perform search result authentication.
With MondoSearch this typically means adding Meta-tags (/data) to all documents defining which groups / users are allowed to view them. And perhaps even which groups/users have specifically denied access.
A Meta-tag like that could look something like this:
<meta name="ALLOW" contents=";53;124;351;33;12341"/>
Then, on the result page, all you'll need is a piece of code that extracts the user-id and the group-ids of the current user and then adding search filters to the search query. Suppose we have a user with user-id "42" and who belongs to the group "users" (id: 351) who performs a search that returns a document with the above meta-tag. The MQL that is sent to the search engine would then have to have these filters added:

"... FILTERS ALLOW CONTAINS ';42;' OR ALLOW CONTAINS ';351;' ...."

To also enforce DENY is a bit more tricky, but certainly just as doable.
The obvious benefits here are: It's very (!) fast, it's clean, it's easy
However there's also a number of downsides:
  • Not all CMS systems support outputting permission-lists to the crawler
  • If access-rules change, they will not be propagated to the index until next crawl
  • It typically doesn't work for non-html documents like Office and PDF (since it's kinda hard dynamically to attach meta-data to these types). However there is a number of workaround to this problem.
The alternative to filtering, is exclusion which in my eyes is definitely not pretty, but sometimes necessary. Authentication by exclusion calls for a custom method is defined that checks if the current user has access to a given URL. A pointer (delegate) of this method is then passed to the search engine that will call it and evaluate every result in the result-set.
The obvious problem is the performance of this solution. On a result-set of 10 pages, with a fast-checking method, it can be acceptable, but often result-sets can be very large. Imagine having to call a custom-made method for every one of 100.000 results - or worse!!
Another problem is that in order to pass a delegate to the search engine the search-engine needs to be installed on the same server as the CMS - something that doesn't always fit into the desired machine architecture.
Of course the performance can be increased of such a method in some cases: intelligent caching, only check the results on the first page, etc. but in my experience it's never a really good solution. In my eyes the only really acceptable use of this is as a compliment to the filtering search (for instance to check access for non-html documents) - or where no other solution works.
In order to set this up on a MondoSearch template, assign a method handler to the "OnAuthorize" event in the SearchControl, like this: OnAuthorize="CheckAuthorization" .
Then define the method elsewhere:


public bool CheckAuthorization(string url){
return true;
}

The last authentication method I will briefly touch in this post is to use a number of rules.
The idea here is that by applying knowledge about the security setup on a website, a couple of simple rules might do the trick.
Imagine a simple setup where only two types of visitors exist on a web-site: logged-in and not-logged-in, and that all the content that only the logged-in users were allowed to see is in the sub-directory "/secure".
In this case you could simply apply some additional MQL when a visitor performs a search:
if(!logged-in){ mql+="FILTERS @CHANNEL!='secure'"; }

This is an ideal approach, but it doesn't work on all sites.

Tuesday, March 6, 2007

MOSS vs EPiServer

Here's another reason for always making sure your feed-reader is up to speed. Today I had almost missed this great post by Patrick Tisseghem because I had forgotten to update the url to his feed. Luckily I got tipped off (thanks, Jesper!).
I already know EPiServer quite well - due to my attachement to the "MondoSearch for EPiServer" project. And just a week ago I spend all day getting an intriguing presentation of our other product suite Ontolica's upcoming version for MOSS. As you can imagine I read Patricks post carefully - it's always interesting to get his view on things. And the geek-cruise does sound like a lot of fun (Hint, Hint)!

Tuesday, February 20, 2007

Mysteries and Mental Models

I've for quite some time been wanting to write a post about a phenomenon I've encountered numerous times, and now I finally persuade myself to put my thoughts down in words. Let's for now just refer to the phenomenon as "Black Box of Mystery" (BBM).

It's a well known fact in the world of computer-human interaction that a lot of usability problems arise when the mental models in the user interface doesn't match the mental models of the user. Then the software seizes to be intuitive and the users stop using it (or at least they'll hate using it). Put in other words, a user interface should behave as if it is what the user thinks it is. So far so good. But now the problems starts pouring in. For users might be at different levels of knowledge and hence have different mental models. And what about that software thats just too complex to be understood?

I have some examples of how people react to BBMs.
When I sit in my car and turn on the wheel, it fits my mental model perfectly that the wheels start turning, and if I'm driving the car will begin to turn. The steering wheel is at least a part of my car thats not a BBM (several other parts are).
In my car I also have a navigator. It would have been a scary BBM to me before I learned about shortest path algorithms and GPS. Now I've luckily learned to accept it, but it did take some adaptations of my mental model. My wife on the other hand doesn't care how it works. She has accepted that it's a black box and just has full faith in it's working. I have tried to ask her how she thinks it can decide on good instructions for her to find home - her answer was simple "well..it's has a GPS so it knows where I live". I suppose her answer is correct in a way.

My beloved grandmother had a TV, and although she spend most of her time watching it she also claimed to hate it. She was afraid of it - cause she didn't understand it. To her it was one big BBM, and she certainly didn't appreciate the fact that she didn't know how all the little people had gotten inside it. She always needed help to tune it to the right channels, and if it was moved and a cable fell out, she'd call somebody to fix it, terrified of touching the thing herself.

I feel the same way about BBMs I encounter in my daily life. Like the SqlAdapter in the .NET framework. I know Microsoft wants me to use it to connect my datasets to my sql-server, but I don't trust it. It's totally a BBM to me and I'd always prefer to use SqlCommands instead, cause they fit my mental model more. They do what I tell them to, when I tell them to do it - and I can fully understand their purpose.
I guess thats something really tricky when you develop API's and frameworks. It's quite difficult to know the domain knowledge level at all users and hence it can be tricky to match their mental models without making BBMs for some of them.

As a part of MondoSearch we had a similar problem. When we first started making .NET API's to the search engine we faced the problem that all the users implementing it was webmasters with little or no .NET / programming knowledge.
In spite of coding examples and lots of guidelines and manuals our support was flooded with problems caused by bad/wrong code.
Something had to be done so we decided to make a SearchControl that could be put on aspx pages that handled all the typical logic related to having a search and result-page, code that was typically error-prone. Stuff like recreating a search upon postback, navigating in search results, narrowing the search, connecting to underlying search-API and so on.
When we released the SearchControl the non-developers like webmasters and supporters liked it instantly because it empowered them to do a lot of things they would have given up on doing before. But then our audience changed. The world had accepted .NET and that making a web-site was a joint developer/graphical designer/webmaster/??? task and all of a sudden we had developers getting annoyed with our Search Control. Why? Because to them it was a BBM that they didn't dare to use...
We soon after released a web-service that rendered a pretty clean code-wise access to all the search functionality. Today we maintain both interfaces and are in fact trying to adjust the SearchControl to be more "developer-friendly" by making it's actions and functionality more controllable and transparent.
But all in all I guess it helped me to learn a little lesson about Black boxes and their effects on people.

Friday, February 16, 2007

MondoSearch for EPiServer (Part 1)

Last year, while I was creating the MondoSearch for Sitecore integration I was at the same time technical-contact/project manager for the MondoSearch for EPiServer integration. Besides from keeping me busy for half a year, this provided an excellent opportunity to learn a lot about these two state-of-the-art content management systems, each with their own strengths and difficulties.

With the EPiServer I was so lucky to be working with the former (now again current) EPiServer Product Chief, Roger Wirz, through his company Briomera. In the end I was very pleased with the results of our joint work - it turned out to be quite a cool integration of the products, deeper integrated than any other EPiServer search tool I've seen. In November and December I got to travel around Sweden and demonstrate it to EPiServer partners in both Gothenburg and Stockholm. It got a lot of interest, and several customers are already making their own implementations based on the integration.

I've been wanting to share some screenshots of the integration with you all, so here goes.

Just as with the Sitecore Integration, the integration for EPiServer is also based on the MondoSearch Integration Services, which is a set of XML Web Services, that's based on MQL and DataSets.
In the Configuration section it's possible to setup the connection strings and urls to all of the web-services as well as using the Diagnostic tool to check that all services are up and running. This is a handy one-place-stop for trouble-shooting.


If we stay in the Admin section of EPiServer we might draw our attention to the Crawler Control.
This is where you can control the indexer, see crawler logs, manually start a new crawl, and also setup an EPiServer Heart Beat that on regular intervals checks if it's time to start the crawler - and if the last crawl went okay.

When it comes to the actual search implementation, we've adjusted the standard MondoSearch Template 1 to work within EPiServer, and also created a PageType for it.
By adding a User Control with meta-tags to all the pages we're also able to enhance the meta information on the pages as well as categorize either using EPiServers categories, or the built-in MondoSearch Categories.
All text-strings used on the search-page can be found in EPiServer style language xml's and can quite easily be translated.
In the integration we've also included support for 2 authorization methodologies in order to fully support EPiServers authorization. This means that when you search on your EPiServer you'll only get back the results you are allowed to see.


Since the Editor search that comes with EPiServer sometimes can leave you wanting a bit more we also included an Editor Search based on the MondoSearch index of the website. This is an easy way for editors to find the documents they want to edit.






This was a brief introduction to the configuration and searching facilities in MondoSearch for EPiServer. When I have time I'll post some more screenshots of the neat interaction with BehaviorTracking and InformationManager from within EPiServer.

Thursday, February 15, 2007

Improving MOSS Search

One of my colleagues, Lars Fastrup, has started a really nice blog around all the work our Ontolica team is doing in relation to improve the usability and functionality in MOSS 2007.
Recently Lars posted some really nice screenshots of the upcoming version of Ontolica, that'll probably wake the interest with most experienced MOSS users!
His announcement of a lightweight version of Ontolica introducing wildcards as a long-lost search feature in MOSS has certainly made quite a buzz already through many a weblog.

Well done, Lars and welcome to the blogging sphere :-)

Hall of Fame: Coleman.com

Every now and then I come across a search implementation I really, really like.
Some places where people think outside of the customers) on their site. In these days where the search market it being heavily commoditized, and more and more websites doesn't care about the quality of their search functionality as long as they have it, it really fills my heart (I know, I'm turning thisbox in order to help the visitors (and/or into a sob-story) with pride to when I encounter MondoSearch customers which has gone that extra mile to use make something thats cool to use.

One of the MondoSearch implementations that I most often showcase to people wanting to see the real power of good site-search is the solution they have at coleman.com.
Coleman.com is a US-based camping gear business, and I think they've made an awesome implementation.

Their solution isn't based on the latest technologies, in fact they still rely on good ol' asp to do the job, but they still managed to put in a couple of really nice features.

Try to go to coleman.com and search for "tents" or "Coolers" or any other product that you'd be interested in.
Now the first thing you'll see is probably a SearchHeader (a query-related banner-add). This will take you directly to a relevant offer they might be having at the moment - or just shorten your way to the products of your interest. I don't know the internal work flows of Coleman, but I can imagine these SearchHeaders being the result of them analyzing frequent search words on the site and then adding SearchHeaders as a response to it in order to help people searching for the most popular terms.
Underneath the add comes the results, in categories. This is an excellent example on why it sometimes can be a good idea to show results in categories.
In the case where you searched for "tent" it's unclear if you are interested in:
a) buying a tent
b) Getting parts for a tent
c) General information about tents
d) Tips on how to use your tent
e) ...

Luckily Coleman Search presents you with the best results within each category right on the first result-page.
Most people are probably interested in buying a tent, so naturally that category goes on top.
And this is what it all comes down to: Search is all about not wasting peoples time. Don't make people waste time on your website looking for the products they want to buy, bring it to them when they ask for it. And when you present them with a search result, make it easy to pick the right result.
In this case, Coleman helps the users by actually showing a small picture of each tent in their "Products" category, along with the price. And if a users feels like buying a tent right there and then, well - it's no problem - just click the link directly on the result-page and add a given tent to your cart!
If you scroll down the results you'll also see a category of Manuals to the various products sold by Coleman. In this case it's quite helpful that they provide a pdf-icon next to the pdf-documents so the user will know what to expect if they select that link...How many times have I not been lost on a company's website, clicked on a result link and then had to wait for x minutes while firefox desperately was trying to load a huge pdf, when I was just expecting a standard document.
In general I find it's always a polite gesture to tell people what they'll get if they click on a link - and especially warn them if they'll end up with something like a pdf (not that I have any problems with pdf-files :-).

At the bottom of the result-page we find the "Advanced Search" field, for searching again and this is actually the first place where I have a little bit of criticism...This area seems a little bit messy in my eyes. There are no clear Gestalts separating the category selection and the search-type selection, and in my opinion both selections are unnecessary. Since the results are divided into categories, and it's possible to drill-down from the results I think the advanced category selection is redundant (and I bet that only very few people actually use it). The same goes with the Search Type. Here it's defaulting to AND-searches, which can be pretty dangerous. Suppose a visitor searches for "Camping Tent". He'll get significantly fewer results than a visitor searching for "Tent" - because not all of the tent-product pages contain the word "camping" although the tents could probably be used for camping :-)
I tend to prefer OR-searches, given that if a document matches all the search-words it's still ranked better than documents matching only some of the search words.


All in all I think it's a nice search implementation with the only recommendation that more simplicity in the Advanced Search section would be nice. Potentially they could also expand the search to include some search-filters, like "search only for products cheaper than X" - I'm sure some users would find that handy.

Monday, February 5, 2007

MondoSearch for Sitecore (Part 4)


Like all good trilogies, this one comes in more than 3 parts :-)

The last little detail in the integration I want to show is the overall architecture. The entire integration between the products are based on 4 key XML WebServices, provided by the MondoSearch products and consumed by the integration within Sitecore.
These are:
  • MondoSearch Search WebService
    Probably the most important WebService. This is the service that handles all the searches. It takes a query in MQL (Mondosoft Query Language), performs a search, and returns results as a dataset. It's used by the search/result pages, the editor search as well as the Similar Pages code example. It's possible to have the integration working only with this service enabled - although naturally all other features than search in the integration will be disabled.
  • MondoSearch Admin/Crawler WebService
    This service can control the MondoSearch crawler as well as doing some essential setup and configuration - like adding starting points, reporting on crawler status, etc. It takes MQL and a connection string (holding user name and password and license key) as input. It's used in the Crawler Control application and the Start Crawler task.
  • BehaviorTracking WebService
    This is the service that extracts all the important information about the users search behavior from BehaviorTracking. Once again it's based on MQL and Datasets which makes it easy and standardized to use. It's used all over - in the BT Portal, Term Details, Related Topics, Item Details, autocomplete searchbox, etc.
  • InformationManager WebService
    InformationManager is typically used by the webmaster or marketing dept. to optimize the search based on user behavior. This could be by adding SearchHeaders (custom pieces of HTML in the top of the search results, based on query), SearchNames (direct link to a specific page for a given search query), synonyms (goes without saying) and so on. The webservice provides easy MQL based access to all these features. However the only feature thats included in v.1.1 of the integration is SearchHeaders - so here's room for improval :-)

Since all of this is based on WebServices it's easy to imagine how you can split up your servers. It's quite easy to have a hosted search solution, as well as hosting the search yourself. You could even host it yourself each product on a different server, and have a fallback hosting scenario setup if company policies requires it.

Another benefit that I find really cool is that the integration leaves room for adding your own components based on the search/behaviortracking functionality, since the classes used to call the webservices are public. Just imagine the possible awesome features it's possible to implement on your site. For instance how about adding a "Personal Suggested Links" box on the front page, based on the visiting users history of searches/browsing on your site?!
Or how about implementing your very own "Local-by-global" search which catches the queries from Global search engines that led users to your site and performs a local search on them, suggesting other relevant pages?!
And the code is pretty simple. In order to perform a search simply write something like this:


using Mondosoft.SitecoreIntegration.Search;
...

private void DoSearch(){
ServiceWrapper service;
DataSet results;
...
service = new ServiceWrapper(Configuration);
results = service.ExecuteSearchMql("OPTIONS Query='Sitecore' "+
"FILTERS AUTHOR CONTAINS 'Allan' "+
"LIMITS FirstResult=0 MaxResults=5");

gridView1.DataSource=results.Tables["Pages"];
gridView1.DataBind();
}

I hope a lot of partners and customers will pick up this challenge and make some really cool implementations of this. Now it's up to you guys :-)

Wednesday, January 31, 2007

MondoSearch for Sitecore (Part 3)

As promised, I'm going to share some more screenshots of the integration between MondoSearch and Sitecore. This time I'll focus on the integration of BehaviorTracking.

BehaviorTracking Portal. The main entry to the BehaviorTracking information from within Sitecore is in the BehaviorTracking Portal, a portal somewhat similar to the well-known Sitecore Today portal, only this time the portlets filling it are BehaviorTracking portlets. Although we're still missing some of the graphics from the original BehaviorTracking this makes out a pretty decent approach to discovering what your website visitors are interested in and by double-clicking on a given keyword, it will open the BehaviorTracking Term Details for that search term.



BehaviorTracking Term Details. When you want to examine a specific search term, you can use the XAML application Term Details. Here you can look up search words, and examine

a) Which search terms are related (meaning which other terms are typically used by the same users in their searches). This can be quite helpful in inspiring new keywords for pages as well as new synonyms for the search.


b) Which pages are typically chosen from the result page, giving you a more exact idea of what the user actually meant. Use this for improving ranking of some pages, or perhaps adding a searchheader or searchname for a given page.


c) The most recent user sessions searching for this term. This might not be so useful, but it does give you that cool "Big brother" feeling :-)


Finally, you can also get BehaviorTracking Item Details. For any given item on the website that inherits from the MondoSearch Base Template, you can see a list of which search terms sent users to the various versions of this page. This is an excellent tool to optimize the content on the individual pages, to the expected content of the users.




As mentioned in Part 2 of this trilogy the along with the integration we also released some code samples, showing how to use BehaviorTracking and search to spice up your site.

On last of these examples is the "Most Wanted" list that is a small control listing the top 5 pages most often chosen from a search result page. I find this to be quite useful, as this is not the most visited pages on the website (the most visited page on a website is quite often the front page that doesn't hold any relevant information at all), but the pages that most people have been looking for. In many cases it will be quite a good help for your users to promote these pages on the front page so they can go directly to them without wasting any more time.

Improving Search with BehaviorTracking

The topic for this post is Behaviortracking (check out the website, cause I'm not gonna spend time here explaining what it is). This is a post where I'm basically gonna pretend I'm in marketing and fill You, my dear reader, with something that might resemble a sales pitch for a particular product.. "Why?" and "Where's the code?" I hear you ask. Well, first of all I feel quite strongly about this - I've seen so many websites that ought to start listening to their visitors instead of their executives - and with regards to the code...well I'm sorry no code this time.

The reason BehaviorTracking is such a cool tool, is that where other web analytics software might tell you about popularity of pages and server loads during the day, BehaviorTracking tells you exactly what you need to know: What are users looking for on my site.
In my mind it's perfectly obvious.
A website is to some degree like a shop. You have some users who browse around the shop, looking at the shelfes and eventually leaving, and some other users who go directly to the clerk at the counter and ask for a specific item. Obviously the people going directly to the counter with a specific goal are the ones most likely to buy - and naturally these are the people you want to listen to. Now, suppose you are the proud owner of a clothes store and a customer walks up to your clerk and asks for a specific pair of "Levis" jeans. Would you like that answer to be:
a) duuh
b) I'm sorry, I don't know anything
c) The jeans department is over there
d) Here is a number of Levis jeans that should fit you, this pair is very popular and this pair here is on sale this week. By the way could I also interest you with a new shirt that matches to go with that?
e) We don't have any Levis jeans at the moment, but I'll make sure to order some. Meanwhile perhaps you'd like to check out this competing brand that looks similar and is a bit cheaper?

(I'm no sales guy, but I could imagine two of the above answers being good - you figure out which).
A good search engine is like a good sales guy greeting people at your store, helping them while selling your products. But in order to always provide the best assistance it needs constant optimization - and thats where BehaviorTracking comes into play. By frequently examining the search patterns of the visitors it's easy to customize not only the website but also the search engine to provide the best possible service to your visitors.

Monday, January 29, 2007

MondoSearch for Sitecore (part 2)

As earlier promised, here's some more info on v. 1.1 of the integration between MondoSearch product suite and the Sitecore CMS system, that was released just before christmas. In this second part of my story I will focus on the search itself and the ways it has been integrated.

The point of the integration was to integrate not only the search engine but also search analytics, crawler administration into Sitecore, making Sitecore a common user interface for both products.

The reason is simple. Although website search over the last couple of years has become increasingly commoditized it's not just something you plug in once, and then expect to have working perfectly ever after. Search is a dynamic thing - like the website it indexes and for the best end-user experience it should be continiusly tweaked and improved to match the expectations of the end-users. The ideal way to do this is by studying the behavior of the users and then optimize both website and search for them (I could talk for hours about this subject, but I'll safe that for another post). Nevertheless that makes it even more important to make the Search and Behavior analytics easy to use for the webmaster/marketing dept. responsible for a given website - and hence we decided to go for as complete an integration between the products as possible.

The search part of the integration includes:

3 Search Result Sublayouts, all based on a Search Template. All of the support Sitecore authorization enabling them to only show the results the logged-in user is allowed to see. All the texts used on the templates is defined in the template, so it's easy to translate in Sitecore. The Sublayouts use the standard MondoSearch SearchTemplate technology so it's easy to change look & feel and add functionality.














2 SearchBox sublayouts, simple and advanced that can be placed on any layout to enable the possibility to search.

Click Item and corresponding layout, enabling logging and highlighting of search results.


A Meta-data xslt rendering for sending item-related meta-data to MondoSearch.



A Base template that allows Sitecore items to have fields to hold meta-data for MondoSearch, including Search categories and indexing rules.














A Crawler Control XAML application that allows an administrator start and stop the MondoSearch crawler as well as publising crawled databases. This tool will also display the current status of the crawler, crawler log and number of indexed pages.


A Sitecore task for starting the crawler
so the Sitecore scheduler can be used to scheduling crawls.


An Editor Search XAML application that allows Sitecore editors access to use MondoSearch to find the items they want to edit. When a result is selected it will of course open in the Content Editor for easy editing.



Templates and items for defining Categories used in Search.



MondoSearch Examples
On top of the integration Mondosoft also supply some coding examples of how to improve the overall functionality on the website. Like this Autocomplete search box that uses frequently searched words as autocomplete suggestions that appear while you type a search query.




One of the other examples is a "Related Pages" box that will use the search engine to search for other related pages to the current page, and "Related Topics" that will use Behavior Tracking to suggest search terms relevant for the page you are currently on.

Now, this was just a brief overview of the "search part" of the integration. In the next post I'll go through all the new cool features the integration adds to Sitecore to track visitor behavior and search term popularity.
Later on I'll also show how the it's possible to add SearchHeaders (custom html/sponsored links) to the search results from within Sitecore and outline a couple of ideas I have on how to further improve the overall value of a Sitecore website.

The new update of the Integration demo-site is due to be launched any day now and it'll be possible for all interested to try out these features on their own - either on the demo-site, or by downloading the integration.

Wednesday, January 24, 2007

MondoSearch for Sitecore (part 1)

As my previous post today might indicate I've been spending my time setting up a public demo-server for the MondoSearch-Sitecore integration.

Even though I was project-manager on the integration project, I must admit that I'm a once again a bit surprised (read: proud) how smooth and easy the integration works once both Sitecore and MondoSearch is installed and working.

It just takes a few steps like installing a package in Sitecore, adjusting web.config, and doing a little customization in your Sitecore website for neatness.
It's a pretty full integration, integration both Search, Crawler Administration, Search BehaviorTracking and Marketing tools for optimizing search within the Sitecore admin UI.

I just need to tweak a few more details to make the website really fit for public display - and as soon as that's done I'll post a lot of screenshots here about it.

For now you will have to settle with this screenshot of the MondoSearch Crawler Control as a Sitecore XAML application.