FindinSite-MS: Search engine for an ASP.NET website   .
Powered by FindinSite-MS
. Home | Installation | Indexing | Control Panel | Web services | Advanced | Purchasing .
. .
  Feature list | Awards | PAF CSV | Hosted search | Download | Getting started guide | Versions | Readme


findinsite-ms Royal Mail Postcode Address File PAF® and CSV search

Search a very small CSV with fictitious addresses from Llareggub, WalesBrigadoon, Scotland  and Hogsmeade, England. You can use wild cards such as * and ? (but not by themselves).

A special version of FindinSite-MS indexes and searches a complete Royal Mail PAF CSV file.

  • US$99 Personal license for a single workstation; US$299 Standard license for a shared single server.
  • Fill in our Feedback form to request an evaluation copy - installation instructions.
  • You must obtain a PAF file separately.
  • Use this tool to clean address data, ie search for an address and find a complete standard address.
  • The search supports * and ? wild cards to make it easy to find addresses eg where hand-written information is unclear or missing.
  • The search can optionally look for contiguous words in an address.
  • No database required. Runs as a Microsoft ASP.NET web application in IIS on Windows XP/Vista/Server - details.
  • Web service available in Standard edition and evaluation; use FindinSite-MS as the basis of your own complete applications - API.
  • PAF English and Welsh files can be searched.
  • Typical search time for a postcode: less than 0.1 second.
  • Any data in a single CSV format can be searched, so convert your database or spreadsheet to CSV, and search it with FindinSite-MS.


The full PAF postcode address file is almost 4GB in length and contains some 28 million address lines. Most users want to find data within this file quickly, eg to verify customer addresses. FindinSite-MS provides a complete yet simple solution for address searching; or its web service can be used from your own custom program for specialised requirements.

The FindinSite-MS Personal licence runs on one workstation - it does not support the web service. The Standard licence versions runs on a single workstation/server/website and allows any number of simultaneous external users.

Please ensure that you are using the Royal Mail Postcode Address File PAF® data in accordance with your PAF licence restrictions.


To use FindinSite-MS, an index of the PAF data must be built first. This one-off process usually takes 2 to 4 hours for a complete PAF CSV. The index consists of several large files that must be copied to the FindinSite-MS web application FindData directory.

Search syntax

The basic FindinSite-MS search is very simple: it finds addresses that contain all the search words *in any order*. So a search for Lake View finds address Lake View, Bampton but would also find Cottage View, Killington Lake.

If the search contains one or more commas, then multiple words between commas must be contiguous. So a search for Lake View, Bampton only finds addresses where Lake is followed by View, as well as Bampton.

When you search for a postcode, you must separate the two parts of the postcode, eg W1A 1AA not W1A1AA

Currently there is no option to search just on one field, eg postcode, town etc.

Search example

If you use the default option provided by the installation, the FindinSite-MS PAF search web application is found at this web address: http://localhost/SearchPAF/search.aspx   Here is a typical screenshot of the search form shown by the FindinSite-MS web application in your browser:

Example FindinSite-MS PAF/CSV search form

Here is an example of the output produced for a search for W1A 1A? where the ? matches any single character. The results are mainly postcodes in central London, but also includes one address from elsewhere that matches this search pattern. Note: the real output does NOT (currently) include yellow highlights - these are added here to show the words that have matched the search. Let us know if you would like the output cleaned of double quotes or expanded so that it has a list of fields and values, eg "Postcode: W1A 1AA".

Total hits: 11

CSVNo: 983,398: "","5Y","34","","Unit W1A","Xxxx Xxxx","","18","","Forge Lane","Minworth Industrial Park","Minworth","Sutton Coldfield","Warwickshire","West Midlands","","England","B76 1AH","46453","N","959075"
CSVNo: 26,605,043: "Xxxxxxxxx Xxxx","1A","1","","","Xxxx XXXX","","","","Portland Place","","","London","Middlesex","","","England","W1A 1AA","49411","L","25733896"
CSVNo: 26,605,044: "","1A","1","","","Xxxxxxx","1AE","","","","","","London","Middlesex","","","","W1A 1AE","49411","L","25733899"
CSVNo: 26,605,045: "","1A","1","","","","5659","","","","","","London","","","","","W1A 1AJ","49411","L","50436794"
CSVNo: 26,605,046: "","1A","1","","","","5674","","","","","","London","","","","","W1A 1AP","49411","L","50504723"
CSVNo: 26,605,047: "","1A","1","","","","1AQ","","","","","","London","Middlesex","","","","W1A 1AQ","49411","L","25733903"
CSVNo: 26,605,048: "","1A","1","","","","5677","","","","","","London","","","","","W1A 1AR","49411","L","50528551"
CSVNo: 26,605,049: "","1A","1","","","","6292","","","","","","London","","","","","W1A 1AT","49411","L","51077161"
CSVNo: 26,605,050: "","1A","1","","","","1AU","","","","","","London","Middlesex","","","","W1A 1AU","49411","L","25733905"
CSVNo: 26,605,051: "","1A","1","","","","5669","","","","","","London","","","","","W1A 1AW","49411","L","50493363"
CSVNo: 26,605,052: "","1A","1","","","","1AZ","","","","","","London","Middlesex","","","","W1A 1AZ","49411","L","25733906"

Search time = 0.0290 seconds

Search performance limits

If you enter a very general search such as simply Road then limits are applied to save processing time and software memory. In this case, only the first 1,000 hits are listed by the web application.

Other internal limits are also used. If these are exceeded then this message appears at the top of the search output: More results might be available - add to your search to get more. In some cases, eg after contigous word searches, this message might appear when there are only a few results or even none - so if you see this, add more to your search so that FindinSite-MS has more to go on.

There is no processing time limit.

Web service example

A full application with C# source is provided to let you test the web service. The screenshot below shows the test application in action: The user has searched for W1A 1A? where the ? matches any single character. Again, the results are mainly postcodes in central London, but also includes one address from elsewhere that matches this search pattern.

Example wild card search use the Test web service application

Web service search performance limits

In addition to the internal search limits mentioned above, the web service limits the results sent to 1,000 records - so as to save network bandwidth. If no "Start" and "End" record numbers are given, then the web service returns the first 20 records.

Again, please note the "More results may be available" box in the screenshot above: if this is ticked then please add more to your search to give FindinSite-MS more to go on.

Web service caching

ASP.NET is instructed to cache web service requests and results for 60 seconds, so an identical request within this time will return the cached associated result; the web service will not be called in this case.

In addition, the web service itself caches a complete result set for 5 minutes after the most recent call. So a first request might return the first 20 hits. A subsequent request for the next 20 hits will be returned from this cache, so the search does not have to be performed again - provided the returned "reference" is sent with subsequent requests. If the reference is invalid or has been removed from the cache, then the search is done again and a new reference returned.

Technical requirements

FindinSite-MS is an ASP.NET 2+ web application that runs in Internet Information Server (IIS) on these Microsoft workstations and servers:

  • Windows XP Professional - includes IIS5
  • Windows Vista - includes IIS7 (all versions above Home Basic)
  • Windows Server 2003 - includes IIS6
  • Windows Server 2008 - includes IIS7

In some cases, you may need to install IIS and the .NET Framework. Any version of the .NET Framework version 2 or above is suitable. The FindinSite-MS installer checks for IIS and prompts you to download the latest .NET framework.


You will usually need to be an Administrator install the software. See above for technical requirements.

Run the setup file SearchPAFSetup.msi (see below for Vista and Server 2008). A wizard checks that you have the prerequisite software, and guides you through the available options. The main choice is the "Virtual directory" - usually the default option of "SearchPAF" is fine - do not put spaces in this name (although it is OK for XP/IIS5). If using IIS7, then leaving the "Application Pool" at "DefaultAppPool" is fine.

Once installed, various items appear in [Start][All Programs][Search PAF]. Select [PAF Search] to do a search of the example PAF - this opens your browser to show the web site http://localhost/SearchPAF/search.aspx

phdcc Search PAF Start Menu

Re-install or upgrade

Reinstalling or installing a later version of this software will preserve your current settings and will not overwrite your search database files.

The reinstall/upgrade will attempt to remove your existing installation first. You may be prompted to remove the product in the Control Panel; do the uninstall and restart the install. If you are prompted to Repair/Remove the product, then select Repair.

Windows Vista and Windows Server 2008 - IIS 7

If installing on Windows Vista (all versions above Home Basic) and Windows Server 2008, then you must do these two steps to do the install:

  • Enable "IIS Metabase and II6 configuration compatibility" as per these instructions. (Otherwise you get an error: "The installer was interrupted before...")
  • Either
    Run the supplied Setup.exe program
    Get an administrator command prompt:
    [Start][All Programs][Accessories] then right-click on [Command Prompt] then select [Run as administrator].
    Move to the directory that contains the downloaded MSI file. Type in:
    msiexec /i SearchPAFSetup.msi

Prerequisites check

The installer checks that you have a suitable version of IIS and the .NET Framework. If not, an error such as the following is given:

Install fails because IIS not installed

If the install progresses but then mysteriously stops and then rollsback, then it is possible that your IIS installation is not configured to use ASP.NET. Contact us for advice: run aspnet_regiis -i.


To uninstall the software go the Control Panel. In XP go the [Add/Remove Programs]. In Vista, go to [Programs][Uninstall Programs] or [Programs and Features]. Select "Search PAF" and press [Remove] or [Uninstall].

The uninstall process (deliberately) does not remove any data files created in the web application FindData working directory. This stops you losing useful files during an upgrade. If you want to clear the computer completely, you will need to use Windows Explorer to delete the installation directory. If you used the default virtual application of "SearchPAF" then the install directory is inetpub\wwwroot\SearchPAF\ on your Windows drive, eg C:\inetpub\wwwroot\SearchPAF\

In Vista the SearchPAF folder still remains visible in IIS Manager. First, remove the directory as described above. In IIS Manager, open the "Default Web Site" [Content View]. Right click on "SearchPAF" and click on [Remove].

Web Service API

  • Only read this section if you are a programmer wanting to use the web service API.
  • The web service API is not supported in the Personal edition.


You will typically use Microsoft Visual Studio or equivalent to use the FindinSite-MS web service API. The supplied WebServiceTest Windows Forms application C# source demonstates the code needed to call the web service API. The web service can also be called from an ASP.NET web application etc if desired.

Be aware of the amount of data requested across network paths. However, the current API has strict limits which should ensure that only a reasonable number of records are ever sent at one time over the network. Other limits also ensure that the search service does not get tied up with one request.

While you can use a Web Reference or ASP.NET 3.5 Service Reference, the recommended approach is to use the supplied client assembly, phdcc.fisms.ServiceClient.dll that defines class com.phdcc.WebService.SearchService. If setting up a new project, add a reference to this DLL. This client DLL has an interface that is almost identical to that obtained using a Web Reference but lets you specify the web service URL in its constructor.


Set up your connection to the API by passing the constructor the web service URL:
public com.phdcc.WebService.SearchService( string URL);

Set up your search request in a fisSearchRequest object, call Search() and then analyse the returned fisSearchResult:
public fisSearchResult Search(fisSearchRequest SearchRequest);

A fisSearchRequest search request is defined as follows:

public class fisSearchRequest

public string UserParam; // A string or null that is passed to the fisSearchResult
public string Text; // The search text
public string Reference; // A reference to a cached search, returned in a previous fisSearchResult
public int HitsFrom; // Which hit to return first, 0 based
public int HitsCount; // The count of hits to return


If HitsFrom and HitsCount are zero, then the first 20 hits are returned.

A fisSearchResult search result is defined as follows:

public class fisSearchResult

public string UserParam; // The value passed in the fisSearchRequest
public int Count; // The total number of hits available
public string Message; // Any error message
public bool MoreResultsMightBeAvailable; // True if the search was halted because too many results were found
public object[] Hits; // If non-null, a string array with the CSV records
public int HitsFrom; // The first hit number returned in Hits
public double SearchTime; // The search time in seconds
public string Reference; // A cache reference to pass to a subsequent fisSearchRequest


The Hits are returned in the order that they occur in the PAF CSV.

C# Code Example

Here is very bare bones code that shows how to call the FindinSite-MS Web Service from C#.

using com.phdcc.WebService;

SearchService SearchTool = new SearchService("http://localhost/SearchPAF/search.aspx");
fisSearchRequest SearchRequest = new fisSearchRequest();
SearchRequest.Text = "W1A 1A?";

// Do search
fisSearchResult rv = SearchTool.Search(SearchRequest);
  All site Copyright © 1996-2014 PHD Computer Consultants Ltd, PHDCC   Privacy  

Last modified: 28 January 2009.