Free Newsletters
Technology & Business Daily

InfoWorld
Log-in | Register

  Friday, August 01, 2003 

Exploring Ultraseek

Chad Dickerson emailed me to note a couple of things about Ultraseek. First, the docs. Heh. I stand corrected. REST interfaces are often poorly documented, but not in this case. To wit:

The ql (query level) parameter determines whether the default search form should be simple or advanced.

Here's another cool that Chad points out, which has evidently been added since I first worked with Ultraseek years ago. If you switch from:

http://search.infoworld.com/servlet/query.html?col=ifwspid&qt=mycroft

To:

http://search.infoworld.com/servlet/saquery.xml?col=ifwspid&qt=mycroft

Then presto! XML results. It's only a short hop from there to an RSS feed that watches for new items matching a search term. Here's an XSLT stylesheet that converts Ultraseek results to RSS 2.0. Here's a prototype feed to which you can actually subscribe. It runs the results of a search for items at InfoWorld.com mentioning 'Udell' through the XSLT transform to produce RSS 2.0.

Granted, that's not too useful as is. The devil is always in the details. In this case, Ultraseek's date ordering (rf=1) isn't yielding all the newest stuff in strict reverse chronological order, which is what you'd want. A real solution would need to collect metadata about actual publication dates. It's just lying around in metatags of IW pages (e.g., <meta name="publicationDate" content="2003-06-13">) and URLs of blog pages (e.g. http://weblog.infoworld.com/udell/2003/08/01.html#a763), waiting to be used.

Still, you gotta love that Web pipelining!

 

InfoWorld.com updates

There are several InfoWorld.com updates to report today. First, the news gang have started a team blog at http://www.infoworld.com/techwatch/. Excellent!

Second, the site's search engine has switched from Google to Ultraseek. For users of Mozilla Firebird, here are some search plugins you can use to search the whole site, or just this blog:

Mozilla search plugin for InfoWorld: src, img, install to Mozilla

Mozilla search plugin for Jon's Radio: src, img, install to Mozilla

Finally, our survey on programming tools and practices is up at www.infoworld.com/161.

Update: I did a bit more spelunking with Ultraseek's REST interface, ran into a problem, and then solved it. I decided to document the process here because it illustrates why I think REST interfaces should be more carefully specified.

The Firebird plugin, and now also the local blog search in the left navbar, are using Ultraseek's advanced search to match only results with URLs containing weblog.infoworld.com/udell. Here's an example of my first try:

http://search.infoworld.com/servlet/query.html?tx0=mycroft &tx1=weblog.infoworld.com%2Fudell&op0=%2B &fl0=&ty0=w&ql=a&op1=%2B&fl1=url%3A

But if you follow that link, you'll see there's a kludge: the skip-to-content link at the top is an awkward way to get past the advanced search instructions. I was able to append #skip to the URL formed by the Mozilla plugin, which sort of worked. A different method would have been required to append #skip to the URL created by the search form on this page -- probably a JavaScript hack. Really, though, I'd rather have just used the simple search page, invoking the URL restriction like so:

http://search.infoworld.com/servlet/query.html? qt=%2Bmycroft+%2Burl%3Aweblog.infoworld.com/udell

Much simpler, easier, cleaner. The problem was that interpolating a variable search term (e.g., 'mycroft') into a string template that includes 'url:weblog.infoworld.com/udell' would have required a different JavaScript hack for the form on this page, and might not even be supportable in the Mozilla plugin.

At this point, I concluded it was an overloading problem. With Ultraseek, as with Google and others, the advanced syntax is available in either the advanced or basic mode. But Ultraseek, unlike Google, overloads "advanced" to mean not only a syntax, but a display format. And there's no way (I thought) to use the advanced flavor of the syntax, which enables the term and the URL restriction to be decoupled as separate variables, while preserving the simple flavor of display.

As I wrote the first version of that previous paragraph, though, the solution occurred to me. The advanced syntax used the variable/value pair "ql=a" which presumably says "query language = advanced." What if I kept the rest of the advanced-style URL, but removed the "ql=a"? Sure enough, that worked. Here's the solution:

http://search.infoworld.com/servlet/query.html?tx0=mycroft &tx1=weblog.infoworld.com/udell&op0=%2B&fl0=%20 &ty0=w&op1=%2B&fl1=url%3A&ty1=w

This is all very geeky I know, but I do have a larger point. It took me a lot longer to work this out than it ought to have. REST interfaces, in general, are far more capable than people realize, but the possibilities are usually so poorly documented that you have to be extra-motivated to figure them out. Why don't people who work so hard to provide cool features make it easier for other people to discover and use them?

 


Recent Entries


















































Sponsored Technology Links

 
 
 HOME  NEWS  BLOGS  PODCASTS  VIDEOS  TECHNOLOGIES  TEST CENTER  EVENTS  CAREERS   About | Advertise | Awards | RSS | Contact Us 

Copyright © 2008, Reprints, Permissions, Licensing, IDG Network, Privacy Policy, Terms of Service.
All Rights reserved. InfoWorld is a leading publisher of technology information and product reviews on topics including viruses,
phishing, worms, firewalls, security, servers, storage, networking, wireless, databases, and web services.

CIO :: ComputerWorld :: CSO :: Demo :: GamePro :: Games.net :: IDG Connect :: IDG World Expo
Industry Standard :: IT World :: JavaWorld :: LinuxWorld :: MacUser :: Macworld :: Network World :: PC World :: Playlist