Hi all,

[ Sorry for the cryptic title but I can't think of a better one]

I am trying to integrate Lucene as a search engine for my database and would
appreciate some help on a problem.

First, some info about the development platform, I am developing on Windows
using Hibernate for DB transactions (HSQL) with MySQL as a DB server and am
using Hibernate search (which in turn uses Lucene) to perform searches.  

A typical database for the data would be something like this:

Id      Fname    Lname  Age     Country
----------------------------------------
1       John    Smith   30      USA
2       John    Doe     20      France
3       Jane    Doe     40      USA

Thus, each row represents one person and each column has data related to
this person.  If I want to search for a "John" living in the "USA", it's a
straight forward "+Fname:John +Country:USA"

However, my database is implemented differently and I have very little
flexibility to change its implementation so I have to work with what is
there.  Here's a sample of the database:

Data Table
Id      Name            Value
--------------------------------
1       Fname           John
1       Lname           Smith
1       Age             30
1       Country         USA
2       Fname           John
2       Lname           Doe
2       Age             20
2       Country         France
3       Fname           Jane
3       Lname           Doe
3       Age             40
3       Country         USA

Now, all rows in Data Table with the same Id represent one IdCard and each
row represents a name-value pair representing the data of each IdCard 

IdCard Table
Id      SIN             
-------------------------
1       111-111-111
2       222-222-222
3       333-333-333

With this, the simple search above becomes quite complex. Since I have to
work with this current database schema, how do I go about querying for a
"John" living in the "USA" and getting the "IdCard" for such a query?

I tried various methods without success

1. Name-Value (AND) search --> "+Name:Fname +Value:John"  will return 2 hits
(John Doe and John Smith)
2. Double Criteria search --> "+Value:John +Value:USA" won't work because
"value" cannot match 2 different terms
3. "OR" search --> "Value:John Value:USA" will return 4 hits,  2 for John (1
for John Doe and 1 for John Smith) and 2 for USA (1 for John Smith and 1 for
Jane Doe)
4. BooleanQuery and QueryFilters can't help because it basically the same as
a boolean search (with caching and performance enhancements)

I simply need to search the Data Table for various criteria and return the
corresponding IdCard object.

A simple solution can be an equivalent to the SQL "Where" clause.  I can
then do a search on value=John and value=USA where both IDs are the same.
This would then return all the Johns who live n the USA with matching Ids
only.  I can then use this Id to look up the IdCard table to obtain the card
for that person.  Does Lucene supprt such a feature?

If it is of any help, I can make minor changes to the DB schema (like adding
a row for control purposes, etc.) but I cannot rewrite it totally.

Any help/suggestion is greatly appreciated.
Thanks.
-- 
View this message in context: 
http://www.nabble.com/Searching-for-multiple-criteria-%28accross-2-tables%29-tp15502657p15502657.html
Sent from the Lucene - Java Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to