Searching with ZoomSearch

What's covered?

This topic covers the use of ZoomSearch, a search tool from Wrensoft. It is used on this site and can also be used in conjunction with a RoboHelp project. The instructions here specifically cover setting things up to work in RoboHelp projects but you should be able to adapt them for use with other HTML editing tools.

Note that these instructions only apply to webhelp outputs. ZoomSearch will not work with compiled HTML help in CHM format.

Introduction

When I wrote the first version of this article, the WebHelp search in RoboHelp was somewhat lacking. The most common requests for improvements were:

RoboHelp 8 has addressed those requirements and will meet the needs of many users. However, if cannot upgrade or you need any or all of these features, then you should consider ZoomSearch.

I first came across ZoomSearch when I saw a post on the RoboHelp forums extolling its virtues and a while later I needed a search tool for an intranet. Having looked once before at such search tools, I was immediately impressed by the ZoomSearch interface. It is largely intuitive, where it isn't there is online help, and behind it all is David Wren who I have found most helpful. You don't need a developer's mindset to use ZoomSearch.

What Does It Do?

Nearly all the above! The exception is true natural language searches but it does support basic boolean operations (AND, OR, NOT, Wild cards. Also exact phrases except as mentioned later).

One of the cool things you can do is have more than one search option. By adding a Search Options page, you can offer the user the ability to search the whole help output, any number of specific areas or an external intranet. Take a look at how it works first.

Search on the word Child as to keep the demo compact, the topics contain few words. You can also see ZoomSearch working by using the Search menu on this site.

Step 1 - Changing the source project(s) and publishing

In this step you set up some folders in your source project(s). The folders needed will vary according to whether you are dealing with one project or a merge, they will also vary according to whether you want to offer one search or a number of searches. I have set out the details in the table below.

Also before you can do anything in ZoomSearch, you need a published output. That is not the same thing as a generated output.

If you don't currently publish, simply create a folder on your hard disk to which you can publish and then in RoboHelp, open the WebHelp layout and go to the last page of the wizard where you can set up the publishing details.

I strongly recommend that first time around, you work with a dummy project and use the Single Project, Single Search setup. Once you have got that working, it really will be much simpler to set up the others.

When you are ready to work on your real project, do so with a copy first. If you get it wrong, you can simply trash the copy and start again. So with that in mind, these are some suggested configurations. You may need others and you will be able to work those out once you have worked on the simpler setups first.

These suggestions are based on the method of merging described elsewhere on my site. If you do not follow that structure, you will need to modify these instructions to suit your setup.

Project and Search Type

Action

Single Project - Single search.

In Project Manager go to HTML Files (Topics) and create a folder with the name search_files.

Single Project - Search options.

In Project Manager go to HTML Files (Topics) and create a folder with the name search_files.

Then create sub-folders with a suitable name for each search.
Merged WebHelp - No search options. Open the main child project (the one to which the redirect in the parent points). In Project Manager go to HTML Files (Topics) and create a folder with the name search_files.
Merged WebHelp - Search all projects plus separate searches for some or each of the child projects.

Open the main child project (the one to which the redirect in the parent points). In Project Manager go to HTML Files (Topics) and create a folder with the name search_files.

Then create two sub-folders. One called all for the full search of the help and one called child1 for the search of just that project.

Next open each child project that is to have its own search and create a folder with the name search_files.

Merged WebHelp - Search options not related to child projects.

Open the main child project (the one to which the redirect in the parent points). In Project Manager go to HTML Files (Topics) and create a folder with the name search_files.

You will need sub-folders for the other searches with a meaningful name.

 

After creating these folders, generate and publish your help.

Step 2 - Adding folders to the published help

You need equivalent folders in the published help as this is where ZoomSearch will create the files it requires.

If the output is a merged webhelp setup, these instructions assume your structure is the one I describe elsewhere on my site. If you have a different structure you will have to adapt these steps.

Project and Search Type

Published Help Folders

Single Project - Single search.

For a single project with no search options, add a folder called search_files immediately below the folder to which you published the help.

Single Project - Search options. As above, then click on search_files and create sub-folders with a suitable name for each search.
Merged WebHelp - No search options.

Locate child_1 under mergedProjects and add a folder called search_files.

Merged WebHelp - Search all projects plus separate searches for some or each of the child projects.

As above, then click on search_files and create two sub-folders, all and child1.

Then go to the other child projects under mergedProjects and add a folder called search_files.

Merged WebHelp - Search options not related to child projects.

The folders need will vary according to what your search options need to cover.

If the options spread across a number of the projects, it is likely you will need to add further folders to search_files within child1.

If the options relate to specific child projects, then create further sub-folders.

By the time you need to set up such options, how will be much clearer.

Step 3 - Create the search database(s)

Now we can open ZoomSearch. The free version from www.wrensoft.com allows you to search up to fifty pages so work with a suitable size project while you are testing. That gives you the chance to prove to yourself that it really is as straightforward as I describe.

This section describes Version 5 of ZoomSearch. I will shortly be updating it to cover Version 6.

Opening ZoomSearch

When you open ZoomSearch you will see the first thing you need to do is define what is to be searched and how. Before you do that though I recommend you create a configuration file. ZoomSearch always opens to the default search configuration so select File | Save As and create a meaningful name. Now during this session of ZoomSearch any saves will be to your configuration.

The Offline Mode tab

  1. The start directory is the location of the published output.
  2. The output directory is where the indexing results are to be saved. For the purposes of this topic using a single project and a single search, use Windows Explorer to create a folder off the root of your published output, we will call that search_files.
  3. The base url will be the relative path between the two. For the purposes of this topic using a single project and a single search, that will be ../

Each search option that you create will need its own configuration file and the details above will need to be amended for each option you offer.

Platform

Now you need to decide what how you are going to deploy ZoomSearch. For this topic I am going to use the javascript method but how do you decide what is right for you? If you visit Wrensoft's site, the differences are explained.

In short:

Configuration

Next you need to set up the rest of the details for the ZoomSearch configuration files, one for each search that you want. For now let's just think about creating a single search across the whole help project. We can cover multiple search options later.

  1. After opening ZoomSearch, click on the Offline Tab and then select File | Save As.
  2. Navigate to a folder where you can store your configuration files and give the file a meaningful name.
  3. Now we can start configuring the search without risk of saving the changes to the default configuration. Click the Configure button to access the configuration screen. Don't be put off by the number of options. This article covers the ones you need to know about and they are described below.

 

ZoomSearch Tab

Comments

General

The first thing you will see is the level of on screen support. Also note the Help button that takes you to good context sensitive help. In addition there is a more comprehensive PDF file on the Wrensoft site.

Accept the defaults for now.

Search Page Again the fields are all fairly obvious. Accept the defaults for now.
Scan Options

This lists all the file types that will be scanned. You will probably want to delete all except HTM and perhaps HTML.

Note that plugins are available to also search PDF and DOC files. They are easy to set up and work well. I use them on a company intranet and they work very well but they are outside the scope of this topic.

Skip Options

This lists all the folders and files that will not be scanned and the words that will not be indexed.

This tab requires some consideration. You need to exclude the internal folders and files that RoboHelp creates otherwise your users will be able to access them with ugly results.

  • \wh excludes many of the internal folders but you must take care to ensure that none of your other folders start with wh.
  • If you know that none of your folders and files have the string wh in them, then you could also add that. I found files that started with the following and defined them individually. whc, whf, whg, whi, whn, whp, whs and wht.
  • You need to excude your startpage which is one reaon I always use index.htm for that. Adding index to the string will also exclude the index_csh and index_rhc files that RoboHelp creates.
  • You also need to exclude any redirect pages you may have. If you use my merged webhelp method you will want to exclude the parent.htm redirect page for example.

For now, set up those exclusions. Examine the results of your first search later and make further changes if required.

Note also the ability to define words not to be included in the search. If a user searches on one of those words, they will be told it has been excluded from the search.

Indexing Options Accept the defaults for now.
Results Layout Accept the defaults for now. You can only modify the template after creating your first index file so look at that later.
Categories I haven't used this part of ZoomSearch but the word from someone who has was "doddle"!
Synonyms This can be useful where, for example, you use the term Warehouse in your help but know your customers may use Depot or some similar term.
Limits

The maximum number of files that ZoomSearch will index varies with the version.

  • Free version - 50.
  • Standard version - 100
  • Pro version - 200,000. (The default in the Pro version is 1000 but you can change that.)
  • Enterprise version - 1,000,000
Authentication For most help projects this will not be required. Use if the help is on a publicly accessible site and you want to index the files on the server rather than a local copy.
FTP

Do remember you must run the index every time you create a new output. It is not done automatically when you generate the help.

You can configure ZoomSearch to upload the files after indexing or you can upload them manually.

Languages If these fields don't mean anything to you, leave them alone! You will know if they are relevant.
Status Log This defines what you want to see displayed when the indexer runs. Accept the defaults for now.
Advanced Accept the defaults for now.

 

Before you run the indexer, click Save. You don't want to lose those settings.

Then click Start Indexing and sit back, not for long though unless you have a really heavyweight target!

Examining the Results

Examine the statistics at the end of the log in the ZoomSearch screen. Do they seem about right?

Look at the files searched. Anything you do not want in the results? If there is, go back to the skip list and edit it, then run the indexer again.

Step 4 - Link The Search To Your Project

At this point we have our help output and within its folders we have the search data. Trouble is that at the moment, they are not talking to each other.

I will cover two ways of linking the search to your project.

If your options include RoboHelp outputs outside the merge, note that ZoomSearch does not open the help using the method startpage.htm#path/target.htm.

If this is your first time working with ZoomSearch, remember that I suggested you work with a single project and a single search so please use Method 1 at this stage.

Method 1

For use where the end user will be given just one search option.

  1. In RoboHelp, highlight the search_files folder and import the search.html page that was created by ZoomSearch in your output in Step 3.
  2. RoboHelp will import some of the javascript files as well. Delete those using Windows Explorer. All the files you require are already in the output.
  3. Open the Skin Editor and create a new button. Call it ZoomSearch and use whatever text and images you want. On the Advanced tab, point to the search.html page that is in the project, not the one in the output.
  4. Generate and publish your help. In the second page of the wizard make sure you deselect RoboHelp's own search and select your own ZoomSearch button.
  5. Go to the published help and test.

Method 2

For use where the end user will be given multiple options.

If the output is a merged webhelp setup, these instructions assume your structure is the one I describe elsewhere on my site. If you have a different structure you will have to adapt these steps.

Stage 1

In this step you will set up and test the page to which your users will go to select which search option they want to use.

  1. Go to the Child 1 project and create a topic called Search Options in the search_files folder. Just give the topic a title for now. We'll add the options later.
  2. Generate and publish Child 1 so that the Search Options page exists in the output.
  3. In the parent project create a topic called Search Redirect. Make it a blank page in the same way as for the parent except the redirect is going to the Search Options page. Remember, the relative path is the one between the Search Redirect and Search Options in the output. In the demo it is
    <meta HTTP-EQUIV=refresh CONTENT="0;URL=.\mergedProjects\child_1\search_files\search_options.htm">
  4. In the skin for the parent, follow Step 3 for Method 1 except point to the search.redirect.htm page.
  5. Now generate and publish the parent. In the second page of the wizard make sure you deselect RoboHelp's own search and select your own ZoomSearch button.
  6. At this point we test before moving on. Go to the published help and open the start page for the whole merge. You should see your Search button. Click on it and make sure you are taken to the Search Options page. If not, check your work until it is fixed.

Stage 2

Now you can link the search data for the whole output.

  1. In RoboHelp open child1 and highlight the search_files/all folder and import the search.html page that has been created in search_files/all in your output.
  2. RoboHelp will import some of the javascript files as well. Delete those using Windows Explorer. All the files you require are already in the output.
  3. Go to the Search Options page in Child 1 and create a link to the search.html file that you imported in Step 1.
  4. Generate and publish Child 1.
  5. Repeat the test in Stage 1 - Step 6 clicking on the link you created in Stage 2 - Step 6. This should open the same search as Method 1.

Stage 3

In Stage 3 we create all the additional search options that are required. For the child projects, I suggest you create and save separate ZoomSearch configurations.

Important

Remember, because you are using a tool external to RoboHelp, the search data is not automatically updated when you generate and publish. You have to remember to update the search when you update your output(s).

If you have a search that covers all topics and you then only deliver some of the child projects the search will include topics that you have not delivered and the user will get a page not found option. Oops! The search data will need to be created again so that it does not include the details of the modules not delivered.

Generating Multiple ZoomSearch Configurations

If you need to generate a number of configurations, James Reinhard very kindly sent me a batch file that he developed in consultation with Wrensoft. Download this text file in which James has put all the information you need.

Topic Revisions

Date

Changes to this page

13 May 2009 Topic rewritten.
30 Aug 2008 Generating muliple ZoomSearch Configurations added.
11 Jan 2007 New topic.