Hi Anderson,
welcome to a long chat:) I'm working since years with both Solr and Hibernate Search as a consultant on search solutions. While I like Solr and have installed that with satisfaction some times, I'm recommending Search more often and for this reason I've ended up contributing lots of patches to it, so I might be a bit biased now as I feel it is a bit mine too. But being just a contributor, the fact I spend my time in improving it should be a good evidence I really believe it's good.
So in short when do I recommend Solr: when a machine will be dedicated to it, there's no interaction with a database, and it is interesting to have an XML interface. It's especially good when these conditions are met, and the indexes don't change very often making an almost-search only system.
Hibernate Search works as well in these situations, it will just take an additional simple step to configure and (currently) needs a database, so when nothing more is required Solr is not a bad choice. Also Search does not contain an XML network server.
Looking into performance, they are both using Lucene as search technology, so query time on a single node will always be very close. They both scale linearly on extra nodes to perform searches, they both use a single-master-write approach to apply changes. Actually Search doesn't need one, it will work fine on a single node too: reference only, no XML parsing, and is able to show fresh results after a change as soon as the change is committed. They actually even share some code, as Search integrates Solr's analyzers which are very interesting: all the cool stemming and phonetic matches you see documented in Solr can be used easily in Search too (one annotation - declaratively - on the relevant property).
Hibernate Search is mapping nice POJOs and is able to get you POJOs back as search results (handy for any kind of presentation layer), apply changes to them and figure out the changes needed to go in both index and database, so when your application does anything on your data, or you think in future it might begin to do something, it's just much easier to update and maintain as it's primary goal is to keep DB&indexes in synch, transactionally. The chance for mismatches is kept at a minimum by design and you'll always be able to rebuild a correct index from a trusted database source. With Solr it's your own problem how you keep data consistent: you can rebuild the index from a database, but when you apply a change to the database you'll have to wait for next index update, or start it yourself.
In Java I really prefer to deal with a POJO than with XML; as I said before if all you need is XML results from a nearly immutable database, Solr is your choice.
Quote:
1. Queries for indexed fields (Strings) and for not indexed Fields (Integer, Float, Date). [In Hibernate Search on in SOLR, i must search on index and, with results of query, search on database (I can't search in both places ate same time).]
I Will Have search like:
"Give me all Register Where Value < 190 And Name Contains = 'JAVA' "
Yes with both solutions you have to index the numerical value as mixed queries are not fully supported. Some degree of database-level filtering is available in Search, but the recommended strategy is to index both properties. Both provide the notions of filters, in Search you have parametric filters which can boost performance.
Search has a very nice additional advantage: you can always fall back to SQL or HQL if the query you make is more about relations than index. It's more flexible, you don't have to index it all, and the results are of the same kind, avoiding much code.
Quote:
2. My client need process a lot of email (20.000 per day) and i must indexed all fields (excluded sentDate ) included Attachments, and performance is requirement of my System
As I said before they share a great deal of technology and design, I expect them to perform similarly, and 20,000 emails a day is easy to match for both of them. If you need the new emails to be searchable immediately, you have to go for Search as it can be setup to expose realtime changes. Both frameworks are being actively developed and getting more and more performance improvements, I never ran a speed comparison, but Search can avoid XML processing and make some clever use of Hibernate's caches, or balance the load between the index and database to have them both working for you, each one on the kind of work they were designed for.
Quote:
3. My Application is multiclient, and i need to separate the index by client.
Both solutions have several options to implement this, no problems either.
Generally I consider it simpler to use Search, and easier to maintain, when requirements change there's no code repetitions around. It's very simple to use for me because I have used Hibernate before, it might be a drawback if you dont know it yet, but it's always good to learn it :-) Having database query options is always good, with Solr you could of course write your own code to query the database but then you'll have to convert it to other representations, you have mismatches, more code to change for each requirement change.
I don't know on what nice news the Solr team is working on, but the Search roadmap is exciting: soon it will use a clustered replicated in memory index and drop the current limitation of a single writing master node.