I SVNSearcher:

What is it?

SVNSearcher is a fulltext search engine for SVN repository. Currently it works on files types:

There is no warranty that all Microsoft Office's files will be correctly indexed, but tests take over 90% effectivity of indexing repository with several tens thousand MS Office's files.

How does it work?

SVNSearcher is composed of two application: SVNIndexer (creates and updates index) and SVNIndexer-webapplication (using index files to searching and provides user interface).

You can use them apart and the only information needed to integrate them is included in configuration file.

Logical architecture of all system is represented below:

SVNSearcher structure

Main component is a search engine based on Apache Lucene (http://lucene.apache.org). It affirms indexing and searching from indexed documents, but it requires text data. Lucene isn't able to connect to repository, so this part is realised by other modules used in SVNIndexer.

Indexing files is an incremental process, starts in regular time interval. First usage creates index files from all repository (or repositories). Each next running indexer updates index with updated files from SVN repository (or repositories).

Searching documents is realised in SVNIndexer-webapplication. It's a client of Apache Lucene and it also provides user interface. It uses only index files to search, doesn't connect to repository. Currently usage authorization option needs SVN authorization file to check user's access to found documents.

How to secure it for corporate use?

Security is provided in three ways:

Can I install SVNSearcher on other machine than SVN repository?

Yes, SVNIndexer is completely independent from SVN server and the only information needed to indexing is access through http protocol to SVN server.
When you installed SVNIndexer on other machine than SVN repository, you can't use directPath property
(to automatically get repositories names) and must set repositories names in file ( repListFile ).

SVNIndexer-webapplication can also works on other machine than SVN repository, but note that in this case SVN authorization file must be copied from server to machine with SVNIndexer-webapplication. This makes that changes in access file on server won't be immediately applied in SVNSearcher.

II SVNIndexer:


Before you start SVNIndexer you need:

All these libraries you can download with SVNIndexer binaries.

Installation and usage SVNIndexer

First thing you should prepare to install SVNIndexer is setting read, write and execute rights for SVNIndexer directory and also all files and subdirectories in this directory.

Configure SVNIndexer:

Now you can install SVNIndexer in two selection:

III SVNIndexer-webapplication:


Before you start SVNIndexer-webapplication, you need:


Copy SVNSearcher-1.2.0.war to your $CATALINA_HOME/webapps and it will be automatically unpacked. Edit file SVNSearcher/WEB-INF/web.xml.
This directory was created after installed by Tomcat.
Set correct patch to conf.properties file (the same file which is used in SVNIndexer) in '<param-value>'.
After it restart your Tomcat.

If you want to SVNSearcher interprets UTF-8 characters, add this line in server.xml (in Connector node) parameter:


Using searcher

There is possibility to use all sytnax avalaible in Apache Lucene, which is similar to google sytnax.
Additionally SVNSearcher enables searching in META-DATA like:

For detail instruction see Help in SVNSearcher web site.

Authorization configuration [option]

This option check user rights for found documents and display only these where user has read rights

If you are going to use authorization option (you set authorization=true in configuration file)
you have to compile module libAuthorization.so - this module depends on SVN and operating system version. The module is required to check rights for user using SVNSearcher.

You also have to set path to SVN authorization file in access property in proterties file.
If you installed SVNIndexer-webapplication on other machine than SVN server and you can't set path to currently using SVN authorization file, you must copy this file on machine with SVNIndexer-webapplication.
Note that in this case all changes in this file on SVN server should be copied to file using in SVNIndexer-webapplication.

Before you use Makefile to create the module, you have to install and prepare:

Now you can execute make in Authorization directory

After building libAuthorization.so copy this file to $CATALINA_HOME/shared/lib
and export viarable $LD_LIBRARY_PATH:


This variable must be always exported when you start Tomcat.


Acrobat, Adobe, PDF and Reader are registered trademarks of Adobe Systems Incorporated.

Linux is a registered trademark of Linus Torvalds.

Microsoft, Word, Excel, PowerPoint, Office, Windows are registered trademarks of Microsoft Corporation.

EJB, Enterprise JavaBeans, Java, JavaServer, JDBC, JSP, J2EE, Solaris, Sun Microsystems, Java Naming and Directory Interface, SOAP with Attachments API for Java, JavaServer Pages and SunSoft are trademarks of Sun Microsystems, Inc.

UNIX is a registered trademark in the United States and other countries, exclusively licensed through X/Open Company, Ltd.

Apache, Apache POI and POI, Apache Tomcat and Tomcat, Xerces-C, Apache Lucene and Lucene, log4j, Apache Maven and Maven are trademarks of the Apache Software Foundation

Subversion, SVN are a trademark of Subversion Corporation

All other marks are the property of their respective owners