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

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

| id | опубликовать | категорию |
| 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;
"опубликовать: 1 И category: 4 "Вернуть правильный пустой результат;
" publish: 1 AND category: 5 "Вернуть неверные идентификаторы 1,2,3; Результат должен быть пустым.

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

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

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


person godi    schedule 13.01.2015    source источник


Ответы (1)


Думаю, я нашел ответ.

Когда я создаю запрос с помощью следующего кода, он выглядит следующим образом: «+ (publish: 1) + (category: 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
person godi    schedule 13.01.2015