Archive for the ‘Development’ Category

Ideas for Better Search Results

Saturday, April 24th, 2010

Making a good search algorithm that can’t be gamed by greedy marketers and other SEO scumbags like myself is not easy. Many doubt it’s even possible.

Just look at Google, the biggest search engine on the planet. Many of the top results are there because they were SEOed to be there. If Google can’t make unbiased search results, then who can?

I just read a great blog post by Jonathan Leger where he asks his readers for ideas for how to make a better search algorithm and I’m going to list some of the ideas I think might be useful and some additional ones I made up while reading.

Votes from web 2.0 sites

Using the votes from social sites like Digg, Twitter or StumbleUpon to help rank search was suggested and I think it’s a good idea. It’s the vote of the people and it reflects popularity.

The likely problems I see is that you can only use stories with hundreds of votes as the lower vote counts are often manipulated by marketing people.

Also the people participating in the voting is not always the same people you are making search results for. I for one do very little voting and a lot of searching and the votes cast might not be representative of what I want to find.

Bounce Rate

The bounce rate is the percent of visitors that click on a search result and then immediately hit the back button when they realize the site was not what they were looking for.

This is a factor already used by Google and I think it’s a good indicator if a search result is actually useful to those searching.

Then again this is nothing new but something to keep in mind when I do further algo changes.

Michael from better click bank analytics noted that the bounce rate can be manipulated using bot nets with automated scripts doing searches and clicking search results. This would require a significant number of IP addresses to work though as it’s easy to just count every IP address once.

Content

A lot of people suggested that great content should be the determining factor and I agree. I just don’t know about any way to determine if the content is great or not, it’s really a matter of taste and content to demographics match.

Both bounce rate, inbound links and social votes are ways to find great content without having a computer that can actually review a site an determine if it’s good or not.

Link activity

I don’t know if the big engines are doing this yet, but what if you let the browser toolbar measure how often links on a specific web page actually get clicked? This way you can rank different links according to how prominently they are placed on the page and how relevant they are to the page theme.

If the footer is stuffed with keyword rich links, nobody is going to see them or click on them and they will be discounted. The same goes for hidden links and just off topic ads.

I use a variation of this in my CashRank algorithm where I only count the first x links on a page, with x depending on how much CashRank the page has. Usually the most important links are placed first so you get an coarse emulation of actual link popularity.

A better way would be to actually render the page in a browser and measure where on the page the link is and how big it is to determine the likelyhood of it actually being clicked.

The key theme here is to improve classic link relevance by giving different links on the same page different weight based on how valuable screen and page estate they occupy.

Human Reviewers

Naturally having a real human reviewing a site will give the best results as far as removing plain spam from the results, only problem is that I can’t afford to hire 100,000 people to review all search results.

I do think however there is an idea here to have people review random sites and give statements as SPAM/NOT SPAM or COMMERCIAL/NON-COMMERCIAL and then you would feed the human reviewed results into a self learning filter and get more pages classified than is actually reviewed.

This is definitelysomething I will look into some day, could work well with a Mechanical Turk.

Deep Digging Tools / Categorization

This is something I’m working on and I think it’s one of the core issues with search. To better find relevant search terms to the one searched for and to find pages on the exact same topic that does not have the exact search term but still is relevant to the search term.

To categorize search terms and learn what they mean, or at least how they relate to other search terms will allow the search engine to provide better search results and tools to refine the search results.

Tools to Help The User Search

That’s a good one. People search in different ways, some type “dog food”, some “food for dogs” and some “dogs food” some “food dogs”. Having some tools that helps the user search in a way that would give relevant answers, some sort of easy, interactive refinement tool would be nice to try out.

Email and IM content

Using links embedded in instant messages and email is another way you could boost links as-it-happens but there’s privacy concerns of course and I don’t run an email service.

I’m going to investigate the Twitter API though if that could be used to found out what people are tweeting about.

Search Engine Query, Parsing Improved

Saturday, February 27th, 2010

Improved search engine query parser and with that more accurate search results, that’s what you can expect from last days updates.

I just had the privilege of spending a day programming instead of doing marketing. I used the time to improve the search engine query parser to find long keyphrases in a query and to remove redundant shorter phrases that are really just a sub phrase of one of the long phrases.

The problem with the old search engine query code was that it would sometimes omit common words even though they were essential to the search engine query. It could omit “best” in the query best hosting providers, and that changes the meaning of the query.

It also split search engine queries into far too many sub-queries.

Like in this search for Hotels in New York City, it’s split the old query parser into “hotels”, “in”, “new”, “York”, “City”, “Hotels in”, “New York”, “in New York”, and “New York City” which is a lot of redundant queries and may end up giving New York too much weight at the cost of Hotels

With the new search enging query parser in place the query for “Hotels in New York City” will omit “in”, “city”, “New York” and even “New York City” as they are sub phrases of the longer “in New York City”

Not that the new query parser is perfect, it still fails to search for “Location: New York City”, Hotels in Manhattan or an address in New York City.

The solution to this of course is the planned synonym logic that will make a search for “in New York City” also query alternatives like “in NYC”, “of New York City” “in Manhattan” etc.

It will be some time though before I have synonyms running as a fair amount of processing power is needed to determine synonyms form the main index. I currently have one Linode working on it and I expect to be able to test the algorithm in a month or two.

Update: I found an interesting article from SEO by the Sea describing a Google patent on Search Engine Query Statistics. The huge volume of search queries that Google has in it’s logs lets the draw a lot of useful conclusions on word relationships and user behavior. I would love to have that much data in my query log :)

Please leave you comment and tell me what you think about the new search engine query parser and please also leave a comment if you notice any interesting phenomenons with the new search query analyzer :)

Simon
Secret Search Engine Labs

Search Results on Your Website, Try The Feed

Saturday, January 30th, 2010

The feed I promised you last time is now ready and you can now get our search results directly on your own website, allowing you to make your own search engine or use the results as additional content on your pages.

You can test it by simply including this URL in you website as an iframe or directly form PHP or some other scripting language.

http://api.secretsearchenginelabs.com/html-feed.php?q=obama&start=2&num=3

In this example q is the query “obama”, start is 2 meaning we skip the first result and start from result 2 (not page 2), num is 3 meaning we show only three results, namely the results number 2, 3 and 4

A normal page one query for “hosting” would be

http://api.secretsearchenginelabs.com/html-feed.php?q=hosting&start=1&num=10

The results are plain HTML with CSS calsses that allows you to customize the look and feel of the results.

There’s a link back to Secret Search Engine Labs at the bottom of the results which you are required to display.

Please tell me you experience with this, as I’d be happy to improve on the interface if you find some issues!

Happy searching!

Simon
CEO and founder,
Secret Search Engine Labs

Link Counting Problem Fixed

Friday, December 25th, 2009

We had a slight problem with counting the final number of links from a page, when new links where discovered and there was several duplicates (same URL)  of the same link on the page we counter every duplicate of the same link.

This caused many pages to get a lower number of outlinks approved than what the CashRank would allow.

i.e. if the CashRank of a page was 10 and there was 5 duplicates of a link to the /shop/ directory, the page would effectively only get 5 links out even though the CashRank would allow 9 links out.

The link counting is now fixed which should speed up discovery of new sites and allow indexing of more pages from sites that were affected by the bug.

Simon