I am struggling to understand the search APIs. Few of them that I know are Lucene and Hibernate Search. Lucene is a text search api(not database) and with hibernate i can search the database.Am I correct ? Please advice me on which search api is good and in which way. What are the other good search APIs in the market. I am a java developer and looking for a search api to search the database.
Lucene can search anything for which you write an indexer - databases included. Hibernate Search (which uses Lucene under the wraps) apparently provides an indexer especially for DBs.
Lucene is great -I don't think there's anything more capable in the Java space- and it's pretty easy to get started with (just check the examples in the documentation). If you want to get a Lucene solution to production you should really work through Lucene in Action, though. There are some complexities behind it that you need to understand and which are not obvious.
Also check out Apache Solr, which is a search server based on Lucene.
Like Lester already said hibernate search use Lucene internally. It provides additional functionality for indexing and search of persisted entity classes. It allows you to annotate you (existing) entity classes and then hibernate search handles storing it in the index and updating it when necessary. Also it integrates with the existing entity manager making it easily accessible through out your program.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." --- Martin Fowler
Please correct my English.