Объедините запрос диапазона с многоточечным запросом в Zend Lucene - PullRequest
2 голосов
/ 05 ноября 2011

Я использую Zend Lucene и спрашиваю себя, можно ли объединить запрос диапазона с запросом с несколькими терминами для выполнения одной операции поиска.

Например, вы строите запрос диапазона, как показано ниже:

$from = new Zend_Search_Lucene_Index_Term('20020101', 'mod_date');
$range = new Zend_Search_Lucene_Search_Query_Range(
             $from, null, true // inclusive
         );

, а затем создайте многоплановый запрос следующим образом:

//this example uses only 1 term but the real use case has many terms forming the multiterm
$multi_term = Zend_Search_Lucene_Search_Query_MultiTerm(new Zend_Search_Lucene_Index_Term('foo','title'));

Тогда как-то,

$combined = combine($range,$multi_term);
$hits  = $index->find($combined);

Возможно ли что-то подобное с Zend Lucene?

Ответы [ 2 ]

4 голосов
/ 07 ноября 2011

Используйте логический запрос.

$query = new Zend_Search_Lucene_Search_Query_Boolean();
$rangeQuery = ...
$multiTermQuery = ...
$query->addSubquery($rangeQuery, true)
$query->addSubquery($multiTermQuery, true)
0 голосов
/ 21 октября 2016

Менее запрограммированный, но не менее допустимый способ (и это относится к текущему ZendSearch) состоит в построении строки запроса динамически, а не в коде.

Например:

+mod_date:[20020101 TO 20030101] +foo:bar

Передайте это в функцию query, и это позволит. С моей точки зрения, проблема заключалась в нечетких запросах и ключевых словах в одном запросе. В коде это было невозможно, но можно сделать с помощью строк запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...