More About Searching
Our pre-indexing solution is, indeed, faster than the search program we examined last month. I did not perform any serious benchmarks on this set of programs, but the difference was readily apparent to the naked eye. Not only that, but our pre-indexed implementation made it easy to rank files according to the number of matches.
However, pre-indexing is not a panacea. For starters, it requires a good deal of disk space, weighing in at 2.6MB for an index of fewer than 400 files. However, given the rapidly dropping price of disk space, even a 10MB index should not prove to be much of a deterrent for most systems.
A bigger problem is the lack of flexibility that pre-indexing forces on a search system. For example, our index programs all used Perl's lc operator to force all of the letters to lowercase. Now that we have removed any trace of case from our index, how can we offer a case-sensitive search? The only real answer is to build the DBM file in a slightly different way, perhaps by storing an additional literal element in the hash for each file. Then we would know that abc appeared five times in a particular file, but that two of these were ABC and the remaining three were abc.
Pre-indexing also means we can no longer offer a phrase search, in addition to AND and OR searches. There are ways to solve this problem; the easiest might be to store “next word” information in the database hash. Then we could search for the first word of a phrase and use the “next word” information to see if the other words were found, one by one.
Finally, pre-indexing always means the index will lag behind other content on a web site. If the index is generated once every 24 hours, it might take up to one day for a new document to be read into the index. One solution is to run the indexer more often, such as every three or six hours.
Searching is an essential part of every good web site. It means users can find what interests them quickly, and can perform analyses that the site's administrators never expected. But as we saw last month, a straight search through a site's files can take a long time to execute. Pre-indexing is the standard solution to this problem, trading additional disk space and a slightly out-of-date index in exchange for faster execution speed. Understanding the trade-offs involved in writing a search engine makes it easier to evaluate free and commercial offerings, and thus make your site a more enjoyable place for users to visit.
- Readers' Choice Awards 2013
- Linux Kernel News - November 2013
- Advanced Hard Drive Caching Techniques
- Mars Needs Women
- Sublime Text: One Editor to Rule Them All?
- December 2013 Issue of Linux Journal: Readers' Choice
- Raspberry Pi: the Perfect Home Server
- New Products
- Web Administration Scripts
- Time-Saving Tricks on the Command Line
- thanks for share, great
15 hours 19 min ago
- There are factors which are
20 hours 18 min ago
- Gnome 3 ?
21 hours 3 min ago
- Reply to comment | Linux Journal
1 day 1 hour ago
- "Redis RethinkDB 4.5%" on Best NoSQL Databases
1 day 11 hours ago
- on the ground
1 day 17 hours ago
- I was able to read the whole
1 day 19 hours ago
- since i have read the title i
1 day 22 hours ago
- Belanja Online Cari Voucher Diskon
1 day 22 hours ago
- The kernel doesn't really
2 days 10 hours ago