Логический запрос ZendSearch Lucene не корректирует работу с числами

Я новичок в Zend Framework 2 и ZendSearch Lucene.
Моя таблица базы данных имеет три столбца с целыми числами, первый для идентификатора.
Во втором — значение публикации (от 1 до 3), в третьем — значение категории (от 1 до 5).
Таблица выглядит так:

| Идентификатор | публиковать | категории |
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 2 | 3 |
| 5 | 2 | 4 |

Я проверил это с помощью следующих запросов:
«publish: 1» вернуть правильный идентификатор 1,2,3;
«publish: 2» Вернуть правильный идентификатор 4,5;
«publish: 3» Вернуть неверный идентификатор 1,2,3,4,5; Результат должен быть пустым.
«Опубликовать: 1 И Категория: 1» Вернуть правильный идентификатор 1;
«Опубликовать: 1 И Категория: 3» Вернуть правильный идентификатор 3;
«publish: 1 AND Категория: 4» Вернуть правильный пустой результат;
«publish: 1 AND Категория: 5» Вернуть неверный идентификатор 1,2,3; Результат должен быть пустым.

Когда число не существует, результат не пустой, он содержит все строки.
Есть ли вариант, что результат будет пустым, когда число не существует?

Кодировка по умолчанию — UTF-8:
\ ZendSearch \ Lucene \ Search \ QueryParser :: setDefaultEncoding ( ‘UTF-8’);
\ ZendSearch \ Lucene \ Analysis \ Analyzer \ Analyzer :: setDefault (new \ ZendSearch \ Lucene \ Analysis \ Analyzer \ Common \ Utf8Num \ CaseInsensitive ());

Идентификатор неиндексирован, публикация и категория являются ключевыми словами.

1

Решение

Я думаю, что нашел ответ.

Когда я строю запрос с помощью следующего кода, запрос «+ (публикация: 1) + (категория: 1)», и это работает.

$query = new \ZendSearch\Lucene\Search\Query\Boolean();

$termPublish = new \ZendSearch\Lucene\Index\Term(1, 'publish' );
$subqueryPublish = new \ZendSearch\Lucene\Search\Query\Term($termPublish);
$query->addSubquery($subqueryPublish, true); // required

$termCategory = new \ZendSearch\Lucene\Index\Term(1, 'category' );
$subqueryCategory = new \ZendSearch\Lucene\Search\Query\Term($termCategory);
$query->addSubquery($subqueryCategory, true); // required
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]