I'm looking into implementing full text search on our Firebird database. Our requirements are:
- Every field in several tables should be indexed. When a result is found we should be able to find out the originating table.
- The index can be stored in the database or in the file system.
- The results of the search (BigInt primary keys) must be used to join with the original records in the database to display the records in a table.
Can anybody recommend a decent way to achieve what we need? I've looked at somehow integrating DotLucence into Delphi, but can't really find very much information on how to go about it.
Here are a few resources for you to consider:
-
Sphinx very powerful and popular free open source full-text search engine.
-
Textolution Fulltext search for Interbase and Firebird.
-
IBObjects Full Text Search ("Fuzzy Search") module, a fully working module that can be used to set up your search indexes or as a model for your own custom implementation.
-
Rubicon is a Delphi add-on that lets you put full text search capabilities into your applications.
-
Fulltext Search for Firebird SQL By Dan Letecky on CodeProject using DotLucene full-text search engine.
-
Mutis is a Delphi port of the Lucene Search Engine. Provide a flexible API for index, catalog and search text-based information with great performance. Excelent for implement custom search engines, researching, text retrieval, data mining and more.
There is a fork of Firebird code made by a company called Red Soft. It's licensed under the same license as Firebird, so you can take a look at their version which can support full-text searches using Lucene engine via JavaVM interfaces.
You can also read a paper titled "Full text search in Firebird without a full text search engine" by Bjoern Reimer and Dirk Baumeister, presented at 4th Firebird Conference.