Discussion:
Zend_Lucene_Search
sareha
2008-04-23 07:15:51 UTC
Permalink
Hi,

I am new to zend lucene framework .. I don't know how to use term query
along with range query. For example i want to display the businesses in
'london' with category 'healthcare' created between 'date 1' and 'date 2'.
How can I combine the different tyes of queries. I'm using zend 1.5.0.

The following queries are working: When used seperately

$query = 'category:healthcare AND location:london';
Zend_Search_Lucene_Search_QueryParser::setDefaultOperator(1);
$userQuery = Zend_Search_Lucene_Search_QueryParser::parse($query);
$results = $index->find($userQuery);
-----------------------------------------------------------------------------------------------------------------------
$userQuery = new Zend_Search_Lucene_Search_Query_MultiTerm();
$userQuery->addTerm(new Zend_Search_Lucene_Index_Term('london',
'location'), true);
$userQuery->addTerm(new Zend_Search_Lucene_Index_Term('healthcare',
'category'), true);
$results = $index->find($userQuery);
--------------------------------------------------------------------------------------------------------------------------
$from = new Zend_Search_Lucene_Index_Term('2008-03-13', 'created');
$to = new Zend_Search_Lucene_Index_Term('2008-03-15', 'created');
$userQuery = new Zend_Search_Lucene_Search_Query_Range($from, $to, true
);
$results = $index->find($userQuery);

Is there a way to combine these and build a single $userQuery? Can
someone send me an example to combine different queries? Please help me to
solve this problem.:-(:-((

Thanks,
Sareha.
--
View this message in context: http://www.nabble.com/Zend_Lucene_Search-tp16832737p16832737.html
Sent from the Zend MFS mailing list archive at Nabble.com.
Alexander Veremyev
2008-05-07 20:17:07 UTC
Permalink
Hi Sareha,

Sorry for the delay, had a car accident near a week ago. Seems, nothing
serious, but it took time.

Yes, queries can be combined using boolean query:
------------------------
$userQuery = new Zend_Search_Lucene_Search_Query_MultiTerm();
$userQuery->addTerm(new Zend_Search_Lucene_Index_Term('london',
'location'),
true);
$userQuery->addTerm(new Zend_Search_Lucene_Index_Term('healthcare',
'category'),
true);

$from = new Zend_Search_Lucene_Index_Term('2008-03-13', 'created');
$to = new Zend_Search_Lucene_Index_Term('2008-03-15', 'created');
$createdClause = new Zend_Search_Lucene_Search_Query_Range($from, $to,
true);

$query = new Zend_Search_Lucene_Search_Query_Boolean();
$query->addSubquery($userQuery, true /* required */);
$query->addSubquery($createdClause, true /* required */);

$results = $index->find($query);
-------------------

With best regards,
Alexander Veremyev.
-----Original Message-----
Sent: Wednesday, April 23, 2008 11:16 AM
Subject: [fw-formats] Zend_Lucene_Search
Hi,
I am new to zend lucene framework .. I don't know how to use term query
along with range query. For example i want to display the businesses in
'london' with category 'healthcare' created between 'date 1' and 'date 2'.
How can I combine the different tyes of queries. I'm using zend 1.5.0.
The following queries are working: When used seperately
$query = 'category:healthcare AND location:london';
Zend_Search_Lucene_Search_QueryParser::setDefaultOperator(1);
$userQuery = Zend_Search_Lucene_Search_QueryParser::parse($query);
$results = $index->find($userQuery);
------------------------------------------------------------------------
--
---------------------------------------------
$userQuery = new Zend_Search_Lucene_Search_Query_MultiTerm();
$userQuery->addTerm(new Zend_Search_Lucene_Index_Term('london',
'location'), true);
$userQuery->addTerm(new
Zend_Search_Lucene_Index_Term('healthcare',
'category'), true);
$results = $index->find($userQuery);
------------------------------------------------------------------------
--
------------------------------------------------
$from = new Zend_Search_Lucene_Index_Term('2008-03-13', 'created');
$to = new Zend_Search_Lucene_Index_Term('2008-03-15', 'created');
$userQuery = new Zend_Search_Lucene_Search_Query_Range($from, $to, true
);
$results = $index->find($userQuery);
Is there a way to combine these and build a single $userQuery? Can
someone send me an example to combine different queries? Please help me to
solve this problem.:-(:-((
Thanks,
Sareha.
--
http://www.nabble.com/Zend_Lucene_Search-
tp16832737p16832737.html
Sent from the Zend MFS mailing list archive at Nabble.com.
Continue reading on narkive:
Loading...