Archive for June, 2007

June 29th, 2007

New Things Algorithmic – Episode 1

Asking a search engine company how they determine content relevance (and hence page ranking) is a bit like asking Coca Cola for the recipe for its famous bubbly. The odds are pretty much nil of getting a direct reply, and what’s more, just as Coca Cola has continually tweaked its concoction over the years, so search engines are continually refining the algorithms they use to deliver the most relevant search results possible.
But, just between you and me, come what may, I’m going to lift the veil on the latest major release of the Exalead search engine: GREMLINS, which pulls together all our latest improvements in relevancy analysis.

Ingredient Number 1: A Breath of Fresh Air in Our Index
You launch a search request for “Beryl”:

  • Because you are a fan of 3D effects and you’re looking for the official site of the free Beryl software.
  • Because all your web 2.0 geek friends are up on Beryl and only by catching up on Wikipedia can you save face.
  • Because your name is Beryl, you’re an actress, and you want to be sure casting agents can find your personal page using Exalead.
  • Because you want to buy your girlfriend a pair of yellow Beryl gemstone earrings.

Whatever the purpose for your search, Exalead was designed to guide you toward the most relevant results for you. Toward this end, our all-new algorithms provide a better analysis of the pages indexed, notably our evaluation of inbound links. We’ve improved our semantic interpretation of these links as well as our analysis of the links’ evolution over time. The results of these improvements are very noticeable, especially when you search on a word associated with rather specific topics, and in particular when one or more of those topics is associated with current news and events (you don’t know Beryl??).

Next Episode:
Ingredient Number 2: Ahhh…You Understand Me.
Sebastien, Web Development Director

June 27th, 2007

The blogosphere talks about Exalead

The first article is a comparison on image searching on the web for several search engines including Exalead. Lisa reviews the different filters available and concludes that:

“After conducting this image search comparison project, I realize that it’s time for me to make a change; at least for image searching. Exalead’s Image Search, by far, offers the most advanced search capabilities than any of the others I compared. When I know exactly what kind of image I’m looking for, it will be the first place I go.”

The second article was published on the site devoted to the search engines http://altsearchengines.com. François Bourdoncle presents Exalead, the functions added to the search engine recently, and those to come.

Carole&co

June 13th, 2007

Learning Javascript - Part I

Many developers hate Javascript. Nevertheless, they are asked every day to “add a bit of AJAX on the website”.

This post is dedicated to these developers.

Javascript is a rich language, it is object oriented and easy to learn.

The basics
The Mozilla Developer Connection is the best documentation source for Javascript. To learn the syntax and the basic data types, read A re-introduction to Javascript.

Objects
In Javascript, an object is basically a hash. The simplest way to create an object is:

var o = {};
o.name = "hello";
o.setName = function(name) {
  this.name = name;
}

In this example, o is an object, its name property is set to hello, and its setName property is a function.

Classes and inheritance.
Javascript handles the notion of class in an unusual way:

  • a Class is an object of type Function
  • this object has a magic member called prototype
  • when invoked with the new operator, a new empty object is created and the prototype is copied inside.

Example:

var MyClass = function() {
  //contructor
  this.name = "default name";
};
MyClass.prototype = {
  //prototype
  setName: function(name) {
    this.name = name;
  }
};

var o = new MyClass();
alert(o.name); // "default name"
o.setName("new name");
alert(o.name); // "new name"

There are multiple ways to write classes. For a full overview, read the excellent Classical inheritance in Javascript.

Access control
In Javascript, everything is public. The best way to preserve the notion of privacy is through convention. For instance, at Exalead we prefix private members with an underscore.

Everything Dynamic
In Javascript, everything can be changed at all times. Even methods. This is particularly useful when coding event based User Interfaces:

o.onReceiveSomeEvent = function() {
// do something
};

It is even possible to enrich basic data types with your own methods by adding methods to their prototype.

Example:

String.prototype.blank = function() {
  return /^s*$/.test(this);
}
"hello".blank(); // false
"     ".blank(); // true

The DOM - Document Object Model

Javascript runs in the browser in an HTML page. A representation of that page - the DOM - is available to Javascript through the global window object. Of course, it would be too easy if the DOM were identical between browsers. How then, do people write cross browser code? There are 2 approaches at least:

Approach #1:

if (navigator.appName == "Microsoft Internet Explorer"
    && navigator.appVersion >= "4.0") {
  element.attachEvent("onclick", function() {alert("click")});
}

if (navigator.appName != "Microsoft Internet Explorer"
    && navigator.appName != "Netscape") {
  element.addEventListener("click", function() {alert("click")});
}

This is the most trivial approach and the least elegant and scalable. It makes sharing code a nightmare and will inevitably make you hate Javascript. Don’t use it, ever.

Approach #2:

if (element.attachEvent) {
  element.attachEvent("onclick", function() {alert("click")});
}
if (element.addEventListener) {
  element.addEventListener("click", function() {alert("click")});
}

This is a lot better. This approach uses one of javascript’s strengths: testing the existence of a function. It provides maximal compatibility with minimum browser knowledge.

That’s all for today folks! In my next post, we’ll dissect the Prototype Javascript Framework.

- Damucho, for the WebDev team

June 6th, 2007

Save your search results

Did you know that every search result can be saved on your Exalead Homepage ?

Saving a result is easy: just click the link “Add to shortcuts” next to it:

Addtoshortcuts1

And the result is saved on your Homepage:

Addtoshortcuts2_2
This trick is applicable to all Exalead searches: Web, Images, Wikipedia and Video.

Those who wish to keep track of the sites they find on Exalead should appreciate it.

- Damucho, WebDev Team

June 4th, 2007

Search Engine Optimization (SEO): More Old-School Than You Think

At least once a day someone asks me “How can I get my site to the top of search engine results?” They’re hoping I have a secret formula ready to whisper in their ear, and invariably I disappointment them.

In spite of the buzz surrounding SEO, achieving the best position possible for your site is really old-fashioned Marketing 101. You have to start by asking not “what do I have to do to reach the top of the results?” but rather “what is it I’m selling, and to whom??” If you are a store in Perth, Australia specializing in work boots for the local construction trade, then good luck trying to position your site on the keyword “shoes” (or that that matter even trying to buy an ad for that word!!). You’ll be squaring off against 200 million competitors.

And even if you succeeded in scoring well for “shoes”, would you be reaching your true potential customers? No. Better to concentrate instead on keywords and phrases like “work boots Perth” or “construction shoes Australia,” depending on where you’re willing to ship and how much competition you face as you broaden your geographic scope. This is the first phase of a good site optimization plan: identifying the keywords that most closely match the products or services you offer, and the clientele you’re trying to reach.

So what do you do with these keywords once you’ve identified them? You head on to Phase 2, which consists of simply working them into your site content in a logical fashion, adding them to URLs, page titles, content headings and page copy. You should then ask your business partners and friends to link to your site using these keywords in the link description.

It really operates the same way as placing a good yellow pages ad: know whom you’re targeting, where they’ll be looking for you, and in as few words as possible (preferably in your trade name!), let them know exactly what you’re selling.

I’ll return to the topic of search engine optimization in more detail in my next post, but for now, I’ll leave you with an insider tip. Take a look at the site http://www.guppies.com/. It ranks at or near the top of all the search engines. Now notice how it’s got that animated guppy on the home page? This proves that search engines love animated guppies. So sprinkle some liberally throughout your site and you’re sure to climb in the ranks.

Or, you can tune into my next post for some less wiggly advice ;-).

Sebastien, Web Development Director