![]() |
| ||
|
Home Success Stories Contact | |||
| Author: | Ryan Weisenberger; Software Developer; Verity Inc. |
|---|---|
| Date: | 2003/03/15 03:58:14 |
| Web site: | http://www.verity.com/ |
BackgroundSuccessful information search is mission-critical. It increases worker efficiency and saves money. On an external web site, it also increases customer satisfaction and helps retain users to the web site. The average company can waste millions of dollars because its employees cannot locate and retrieve the information that is needed for their jobs.
Infoseek released the original version of Ultraseek Server on March 31, 1997. It was built by wrapping Infoseek's core search technology with Python, in order to make it a complete search engine for enterprises. Verity Inc. acquired the Ultraseek product through its recent acquisition of Inktomi's enterprise search business in December 2002. The product is now known as Verity Ultraseek.

The New Verity Ultraseek Zoom in
Verity Ultraseek is an advanced search engine that gives employees of departments and small to mid-size enterprises the power to quickly find the information they need to get their jobs done.
Downloadable for free 30-day trials, Verity Ultraseek can be downloaded and installed on a corporate intranet or website typically within 20 minutes, and delivers extremely low total cost of ownership. The software's administrative and user interfaces are also extremely user-friendly.
Choice of PythonPython, a language that was previously used to build the Ultraseek Server and several back-end tasks at Infoseek, was used in creating the Ultraseek spider, as well as the GUI that provides the end-user search box, results pages, and all administrative functions.
Python was chosen for several reasons:
Some other Python benefits:
ImplementationVerity Ultraseek now runs on Windows NT, Linux, and Solaris.
The overall architecture includes a built-in HTTP server with an underlying spider to collect web documents, and a query engine to serve search results back to the user. The interface, including the administrative console, is served over the built-in HTTP server using Python-scripted HTML. Some of the modules, such as the search spider, GUI, and HTTP server, were written in Python. For performance reasons, others, such as the query engine, indexer, and HTML parser, use the Python/C API to incorporate functionality written in C. The C-based search engine core was also wrapped as a Python extension module. Some C++ is used in the interfaces to key third party technologies. Python's flexibility in this regard gave us a wide degree of flexibility in integration.
Other software packages that are integrated into the product include: Basistech's JMA, KMA, and Rosette, DataDirect's ODBC Connect, XLT from InXight, KeyView document filters from Verity, and Adobe Acrobat libraries.
ResultsPython was facilitated in a cost competitive environment. Today, more than 2,500 worldwide customers have deployed Verity Ultraseek that uses the Python language.
The source code, not including third party technology, is approximately 80,000 lines of Python, and less than 150,000 lines of code overall. This includes the Python-scripted HTML that makes up the user and administrative interfaces which represents approximately 40,000 lines of the total.
ConclusionThis project has been incredibly successful.
The Verity Ultraseek development team has been flexible and responsive in developing, implementing and improving features according to customer feedback. Python has been very useful in keeping the development environment simple, flexible, and easy to learn.
During the course of development, only a few disadvantages were found in Python. One was inability to detect some errors that would typically be uncovered during compilation (although static error checking tools like PyChecker are now available for this problem). Another was a result of the very seamless way in which Python casts between object and data types. While this feature allows for quick and flexible code, it is the responsibility of the programmer to make explicit the data types that a function expects. A standard coding style that names variables according to their expected data type is an easy way to address this problem.
A 30-day evaluation of Ultraseek 5.2 is available for download at http://www.verity.com/.
About the AuthorRyan Weisenberger is a software developer and project lead for Verity Ultraseek. He has been involved with the product for four years. Ryan is originally from southern California, and has been working in the high-tech industry for seven years.
| Sponsored by Wingware. |