Zoom Search and Expression Web

I have been using FrontLook Site Search Engine for quite a few years now, first with FrontPage 2003 and then Expression Web 1. I used the php version and it did an excellent job of providing a search engine for my viewers with no ads. It also did NOT require that the site be indexed in advance. As new versions of Expression Web were released, this add-in was not upgraded, so I kept version 1 of Expression Web installed so I could continue to use it.

Fast forward to 2010 and an upgrade of php 5 which caused all of my FrontLook Site Search Engines to break. I checked with my host and was told:

You were having this issue because your script relies on register_long_arrays, a feature of php which is in the process of being deprecated (http://www.php.net/manual/en/ini.core.php#ini.register-long-arrays).

I checked with the developer of FLSSE and was told it was no longer being developed or supported. So I was off to look for another search engine. Bing and Google both require your site already be indexed. Many of the free ones place ads on the results page BUT did not require that the site already be indexed. The free ones also have size limits.

I kept hearing Zoom Search by Wrensoft mentioned and decided to give it a try. The Free Edition is available for small personal websites (up to 50 pages). No advertising, nag screens, or time restrictions. I decided to give it a try although all of my sites with the exception of Geary Family Homestead were over the limit.

I experimented with the free version using just the basic default settings. I was impressed. I tweaked the configuration files some more and edited the search results page so that it matched the site.

This tutorial was written using Zoom Search on a Windows Vista system.

System Requirements

Zoom Search will work with Windows 2000, XP, Server 2003, Vista (32 or 64bit), Server 2008 (32 or 64bit), or Windows 7 (32 or 64bit). You will need a web server with one of the following installed:

  •  PHP (4.2 or higher)
  • Web server with ASP 3.0 or higher and VBScript 5.5+
  • Web server with CGI executable permissions
  • Web server with ASP.NET support (hosting permission and Full Trust privileges to install and run custom Server Control
  • A web browser with JavaScript 1.5 or higher support  - when none of the above is available.

Download and Install

You can download the Free Edition of Zoom Search (Click Free Download). Remember where you saved the file. Double click to install. There is not a trial version available of the various editions.

Using Zoom Search

The Zoom Indexer is a Windows application that scans your entire website and indexes the content and information it finds on each page. It will then create all the files you need to upload to your website, for you to have a running search engine.

Zoom Search has an extensive User Guide that you can download.

This tutorial will use the PHP platform.

To start the indexing process, click on the Zoom Indexer icon on your desktop. The first screen you see will be the Zoom Search Engine Wizard, which is a good place to start.

View Screenshot

Step 1: Select one of the following options:

  • Create a search engine for an online website (tutorial uses this option)
  • Create a search engine for an offline CD or DVD
  • Create a search engine for an Intranet

Step 2: Select the mode of operation:

  • Spider mode indexes a remote copy of your website already uploaded and hosted on a web server. NOTE: If you select this method, please follow the user manual.
  • Offline mode (mode selected)

The Offline mode indexes a local copy of your website, stored on your hard disk. This is effective for static web pages and allows the user to index a website without uploading it to a web server first. This mode can also be used for web pages that will be published on a disk or CD-ROM, where a web server will not be available and does not require an Internet connection.

Select the folder on your computer to index. Click Next.

View Screenshot

Type the Base URL. This is the URL where your website will be published and uploaded to. This is used to determine the base location of each file on your website, so do NOT specify the filename of the main page (i.e. index.html, home.htm, etc.).  Click Next.

View Screenshot

Step 3: Select the type of files or file extensions you want to include in the index. Static web pages, dynamically generated pages, and zip files are available by default. Additional file types are available from the Scan options button on the Configuration tab. If you need to index PDF, DOC, XLS or similar binary files you will need to download and install the appropriate plug-in's. The Free Edition does NOT support the plugin. Click Next.

View Screenshot

Step 4: Select one of the following as your scripting platform:

  • PHP (used for this tutorial)
  • ASP
  • ASP.net
  • Javascript
  • CGI

 Click Next.

View Screenshot.

Step 5: Select your output options. I create a folder named search within the website to hold the files created. Type the maximum number of pages to index. For the Free Edition the limit is 50.

Select to Start Indexing immediately OR Do Not Start Indexing and make more configuration changes.

View Screenshot

For the purpose of this tutorial, I chose Do Not Start Indexing since I wanted to make additional configuration changes.

The next screen will show you the options you have selected so far.

View Screenshot

Configuration Options

The Zoom Search User Guide covers each of the configuration options extensively. Spend some time looking over what is available under the various selctions as you work on configuring these options. 

Clicking on Help button. from any of the configuration options screens will bring up Help topics for that particular option. Each of the options is covered briefly here and include:

Scan options:

This is a list of the filename extensions that will be scanned by the indexer. If a file has an extension that is not in this list then it will be skipped. Note that each file extension must begin with a "." (dot) character or it will be ignored. Up to 50 extensions can be defined in this list. Since I am working with a static web site, I left the default selection which includes:

  • .htm and .html
  • .php
  • .txt
  • .php
  • .asp
  • .cgi
  • .aspx
  • .pl
  • .php3

View Screenshot

Skip options:

NOTE: With FrontLook Site Search Engine, you ticked the pages you wanted to include in the Search Results. With Zoom Search you exclude the files/folders you do not want to include in the Search Results.

Here you can enter the Page and Folder skip list. This is a list of pages and folders that will not be scanned during the indexing process.

Note that filenames and paths are case sensitive. Typically you would want to filter pages that the user should never be able to get to directly via the search function which would include such things as include pages, form confirmation and thank you pages.

Sometimes there are situations where you would want to stop a section of a page from being indexed. This may be common headers, footers, or navigation menus which appear on every page of your site. This can be accomplished by enclosing the unwanted section of the HTML document within the following tags: <!--ZOOMSTOP--> and <!--ZOOMRESTART-->. This is often used to exclude navigation bars and menus. Note however, that the hypertext links within a ZOOMSTOP and ZOOMRESTART section would still be followed in Spider indexing mode.

View Screenshot Skip Options

View Screenshot areas marked as not to index

Spider options:

These are options which control the way in which Zoom will download files when it is in spider mode. Note that it does not apply for offline mode indexing.

View Screenshot  Spider options

Search page:

These are options specific to changing the appearance, or behavior of the search page from which searches are entered and results are shown. If you want to add a simple search form on your web site’s main page, or navigation bar, etc, you can do so by specifying the following HTML on that page.

<form method="GET" action="search.php"> <input type="text" name="zoom_query" size="10"> <input type="submit" value="Search"> </form>

Note the relative location of the search script from where this HTML is placed. If the form is used in a page that is one directory down from the search script, you would need to link to “../search. php”.

If you are using a XHTML doctype for your site, you will need to replace GET with get for the page to validate.

<form method="get" action="search.php"> <input type="text" name="zoom_query" size="10"> <input type="submit" value="Search"> </form>

NOTE EXPRESSION WEB USERS: If you are using Expression Web and add the search code to your DWT, you should use an absolute path to the search script. An example of the search box placed as part of the menu can be seen on the left hand side Migrating From FrontPage to Expression Web and this site is now using Zoom Search.

View Screenshot Search Page options

Results layout:

This set of options allows you to modify the appearance of the search results. You can select or disable the elements that should be displayed per search result. Note the Preview pane at the bottom of the window gives you a representation of what your results may look like with your current selected settings.

NOTE EXPRESSION WEB USERS: You can attach the DWT to the Search Results page which is named search_template.html by default. Zoom Search embeds the styles it creates in the head section of the page. You will need to either move them to a separate external style sheet BEFORE you attach the DWT or add them to your current style sheet.

The following line of code is added to the body tag of your search_template.html page.

<body onload="if (document.getElementById('zoom_searchbox')) {document.getElementById('zoom_searchbox').focus();}">

This line of code as well as all the styles will be wiped out when you attach the DWT.

Once you have attached the DWT you will have to detach it in order to add the above line of code back into the search_template.html page as the body tag is part of a non-editable region. You also will need to test your search engine AFTER you have published and check the search results page to make sure it displays as you expect it to. I do NOT add the Zoom Search box to my DWT until I am certain everything is working as I expect and the Search Results looks like I want.

NOTE: Before you  attach and detach the DWT, make sure you have copied the current code to a notepad file or saved the page as old-search_template.html so you have the code to use.

Make adjustments to the style sheet as needed to correct any display issues. Two styles that MAY cause you a problem are:

.result_block { margin-top: 15px; margin-bottom: 15px; clear: left; }
.result_altblock { margin-top: 15px; margin-bottom: 15px; clear: left; }

Both of these contain clear: left; which will cause the search results to display BELOW the left menu on the Migration site and this site.

You should also be aware that if you tick Context description to be displayed, what displays is the surrounding words from the content of the page where the searched word was found. This may NOT be what you want.

EXAMPLE: If I search this site, for "site templates," the search results look like the image shown below. Because Site Template appears on every page of the site as part of the menu, every page is returned as a search result which is NOT what we want. Refer to the Skip options section as to how we can keep that from happening.

Screenshot Search Results Example.

You can choose whether the searched for word or phrase is highlighted or not. You can change the highlighting color by editing the css file.

You can choose to Modify template from the Results Layout screen. Clicking that button will open a NEW instance of the program you have associated for editing html pages i.e. Expression Web, Notepad, DreamWeaver.

View Screenshot Results Layout options

Indexing options:

You can specify the parts of a page that should be included or excluded from indexing in this section. This includes the page title, content, and filename. Meta information can also be indexed such as meta descriptions, keywords, and author information. By excluding certain sections of pages, you can make index data files smaller and the indexing procedure faster, and less memory intensive. It may also help make your searches more accurate by including or excluding only the relevant sections of a page.

View Screenshot Indexing options


These are the defined limits of the indexer, setting the maximum number of files to scan, maximum number of unique words to index, maximum file size scanned, and the number of characters used for the description of each file.

The Free Edition is limited to 50 pages, 15,000 unique words, 100,000 bytes, and 150 characters respectively.

The Standard Edition is capable of indexing up to 100 pages and provides plugin support for PDF, DOC, and other file types.

The Professional Edition license allows you to change these limits manually, up to a maximum of 200,000 pages and half a million (500,000) unique words.

The Enterprise Edition has no limit on the number of pages or unique words you can attempt to index. It is limited only by the amount of memory in your indexing computer.

View Screenshot Limits options


This tab allows you to enter login and password details to spider a secure site that requires authentication. You will need to check Enable HTTP authentication before you can enter the Login and Password credentials.

View Screenshot Authentication options


Clicking on this tab will bring up your settings for uploading files to your web server via FTP. You can check the option to Automatically upload the files at the end of indexing. I choose to upload the files via Expression Web once I have completely finished.

View Screenshot FTP options


With Zoom you can select the character set from the languages configuration window. This will be the encoding and character set (charset) of the resultant search page and index files. Zoom will scan files and convert the content from the character set specified on the web pages to the encoding selected here. Files which do not have a charset specified will be assumed to be the character set specified in the config window.

if your website uses Unicode UTF-8, you must enable the “Use Unicode” option. Since my sites use

 <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type" />

I tick 'Select other encoding' and select the same type from the dropdown.

If the two character sets do NOT match, you will find that your search page generates a warning when you try and validate it.

View Screenshot Languages options


The Word weighting drop-downs allow you to increase or decrease the importance of words found, depending on where the word is found. I left the default choices.

  • Title of the page
  •  Meta description of the page
  •  Headings of the page (ie. within <H1> and <H2> tags)
  •  Filename
  •  Meta keywords or ZOOMWORDS tag of the page
  •  Link text and ALT text for images

View Screenshot Weightings options

Content filtering

Content Filtering allows you to filter out an entire page based on words found within the page's content. You will need to check Enable content filtering before you will be able to enter a list of words preceded with a plus (+) or minus (-) sign. Pages with words on the plus list will be indexed. Pages with words on the minus list will NOT be indexed.

View Screenshot Content Filtering options


This allows you to specify categories in your search engine, allowing your users to select from a dropdown to restrict searches to certain sections of your site. Each search result will also be tagged to indicate the category that they belong to. To enable categories support, you will need to check Enable categories. This will bring up the categories management list, where you can add, remove, and edit the categories.

As an example, if I was creating a search engine for my genealogy site, I might add categories for each surname section of the site so that someone could search each section or the entire site.

View Screenshot Configure Categories Options

View Screenshot Add/Edit Categories

You can see a working example of a site using the category search on my Family Genealogy site.

View Screenshot - Search box with category selection.


This option allows you to generate a plain text sitemap (compatible with Yahoo Sitemaps) and a XML sitemap (compatible with Google Sitemaps) for your website at the same time as having Zoom index your website.

Note that you can use Zoom's Incremental Indexing to update your search index, as well as your sitemap, in one go without having to re-spider your entire website.

View Screenshot Sitemaps options


This feature allows you to specify synonyms or variations of words, and/or common misspellings, etc. and allow you to map them to an equivalent word in the index. This can be very helpful if many users on your site are searching for names which are different to the ones you used on your website, but have the same meaning.

As an example, the word “question” could be made equivalent to “inquiry, enquiry, query, questions”, so that when a user searches for any of the aforementioned words, they would get the same results.

View Screenshot Synonyms options

Recommended links

This feature allows you to specify a list of keywords or phrases that you can associate with specific URLs. When a user does a search for a matching word or phrase, these recommended results will then appear before the rest of the search results.

View Screenshot Recommended links options

These recommended links will not only appear above all other results, but they can also be customized to stand out from the other search results. By using new style sheets classes it will, for example, be possible to make these results appear in bold or be highlighted with a different background color.

View Screenshot Recommended Links Search Results

Custom meta fields

You can specify custom meta fields that you want Zoom to index and make searchable. This is typically useful for online shops and web sites where a database-like search criteria is necessary.

View Screenshot Custom meta field options

Index log

You can configure the type of messages that are displayed in the main status log window during an indexing session here. This allows you to configure Zoom to only log certain messages types as necessary, which can be useful if you wish to minimize the messages produced so it's easier to filter through. You can select basic or detailed logs.

View Screenshot Index logs 


The Advanced tab lets you choose some of the more advanced configuration options such as:

  • Stop the wizard from being displayed when Zoom starts.
  • Play the system alert sound when indexing completes.
  • Search logging (if enabled) will log searches made on your website and will record them into a serverside log file. You will have to specify the filename and path of the location of the log file on the server-side relative to the location where you will place the search script.

View Screenshot Advanced options

Zoom - How to enable search word logging

If you are enabling Zoom's search word logging feature on your web server, you will be required to change file permissions on your server. If you are unsure whether you can do this, please check with your web host first.

For this example, the search page is at:


And that log file will be stored at:


First, you will have to enable logging and specify the filename in the Indexer configuration window. Note that the filename specified will have to be a relative path based on the location of your search script.

View Screenshot

Note that in the screenshot above, I specified a log filename of "./logs/searchwords.log". The dot at the start indicates that it starts from the current directory (where the search script is), under a folder named "logs", and a file named "searchwords.log".

Next, you will need to set permissions for logging (via FTP). Using either Expression Web or your FTP client (Filezilla in this example) create a new folder named "logs" within the search folder and upload it to your server.

NOTE: You will need to use your FTP client for this step. Right click on this folder, and select Properties. You should be able to allow "Write" and "Read" permission here. If you have multiple permission sets, enable the Write permission for "User". If you can enter a "Numeric value" or use the "CHMOD command", specify "755".

View Screenshot

You should now be able to open up the search page, and make a search. After your first search is made, a "searchwords.log" file will be created in your logs folder. You can download this file to see the results logged.

View Screenshot

Once you have configured the search options or make changes to them, make sure and save the file. I save the file to the same folder as the output files. Click the Start Indexing Now to begin the indexing process. If you have selected the Spider mode, make sure you have published your latest changes to the server.

Once the indexing process has completed, you will see a screen that indicates what files will be uploaded to the server if you chose the automatic upload option. Otherwise, you will need to publish the files from Expression Web.

View Screenshot

Indexing status

Once the indexing process has completed, the Status tab provides an overview of the indexing process such as:

  • Number of files indexed
  • Number of files skipped
  • Number of words found
  • Number of links found
  • Number of files found for each different file extension

View Screenshot Indexing Status

The Errors and Warnings will show you any broken links as well as errors and warnings the indexer found. Double-clicking on the "View" column will bring you to the "Log" tab, with all message types disabled except for the corresponding error you selected here. This allows you to track down specific error messages or broken link messages even when you have a very large Log.

View Screenshot Broken links warnings

Zoom Search and Expression Web

There is NOT currently an add-in that will allow Zoom Search to work within Expression Web. If you save the output files and the configuration file to either the root directory of your web site OR to a folder within your web site, you can then double click the configuration file (zoom.zcfg) and Zoom Search will launch with the configuration file loaded.


If you are looking for a search engine to add to your web site, I can highly recommend Zoom Search by Wrensoft. I found it easy to work with. As of this writing, I have only used the spider mode. I will be using the offline mode on my genealogy site next and will add the results to this article.

You can see how Zoom Search works on  Migrating from FrontPage to Expression Web and the Geary Family Homestead as well as Genealogy Web Creations. It will also be appearing on this site as soon as I finish configuring it.

If you have a small, personal web site, under 50 pages, then Zoom Search Free Edition will work for you. There is no advertising, nag screens, or time restrictions.

The Standard Edition which sells for US $49 is for  larger personal or small businesses sites (up to 100 pages) and offers support for more file formats.

The Professional Edition which sells for US $99 is for for commercial sites (up to 200,000 pages).

The Enterprise Edition sells for US $299 is for enterprise use (up to approx. a million pages).

Compare the editions of Zoom Search.

What do you need to use Zoom Search? System Requirements

Your Zoom Search can be used for indexing multiple sites. You only need one license per installation of the Indexer - so you can manage a multiple number of sites with one license if you handle all the indexing on one computer. More information here.

Making Your Zoom Search Forms Accessible

The Zoom search box generated by the program will NOT pass WAVE - Accessibility Testing. You will need to make the following changes to the simple Zoom Search code:

<form method="GET" action="search.php"> <label accesskey="4" for="searchterm">Search This Site</label><input id="searchterm" name="zoom_query" type="text" size="10" value="Enter search term" onfocus="this.value=' ' "/> <input id="searchbutton" type="submit" value="Search" /></form>

The search box generated for the search_template.html page also will not pass accessibility testing as generated by the program. You can choose to leave it as is or tell the Zoom Search NOT to generate the Advanced Search Box at the top of the search_template.html. On the Search Page tab under Search Form Appearance click the drop down and select 'Do not generate'. You can then add your own code  which will be as follows:

<form id="myform" method="get" action="http://www.expression-web-tutorials.com/search/search.php">
<label accesskey="4" for="searchterm">Search This Site</label><br />
<input id="searchterm" name="zoom_query" type="text" size="10" value="Enter search term"  onfocus="this.value=' ' " /> <input id="searchbutton" type="submit" value="Go" />
<p><label for="zoom_per_page">Results per page:</label> <select id="zoom_per_page" name="zoom_per_page">
<option selected="selected">10</option>
</select> </p>
<p>Match: <input id="any" type="radio" name="zoom_and" value="0" checked="checked" /> <label for="any">any search words</label> <input id="all" type="radio" name="zoom_and" value="1" /> <label for="all">all search words</label> </p>

Both of the search boxes listed below should pass the Accessibility Test.

NOTE: Using onfocus="this.value=' ' "  will cause the Enter search term in the input box to disappear once the cursor is placed in the box to type a search term.


Zoom Search Resources

Pat Geary

Copyright © 2010 Pat Geary of Expression Web Tutorials and Templates, All Rights Reserved
Written September 2010 
Revised June 2011
Revised November 2011

Revised and Updated April 2012