Full Text Search with Firebird and Delphi

被刻印的时光 ゝ 提交于 2019-12-20 10:11:20

问题


I'm looking into implementing full text search on our Firebird database. Our requirements are:

  1. Every field in several tables should be indexed. When a result is found we should be able to find out the originating table.
  2. The index can be stored in the database or in the file system.
  3. 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.


回答1:


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.




回答2:


I think you will have a problem with requirement 2: The index can be stored in the database or in the file system. Most indexing services create their own index file which stores data in a highly optimized way. If you really want it, maybe it is possible to load and save an index to a single blob field but I don't really see a reason for this.



来源:https://stackoverflow.com/questions/952830/full-text-search-with-firebird-and-delphi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!