Lucene.Net.Search.BooleanQuery+TooManyClauses: системная ошибка
Я пытаюсь выполнить поиск по приведенным ниже параметрам, и мне интересно, почему некоторые вызывают это исключение.
Только несколько параметров не работают. Все остальные работают.
?q=220v+0+ph
=> Не работает?q=220v+1+ph
=> Не работает?q=220v+2+ph
=> Не работает?q=220v+3+ph
=> Не работает?q=220v+4+ph
=> Работа?q=220v+5+ph
=> Работа?q=220v+6+ph
=> Работа?q=220v+7+ph
=> Работа?q=220v+8+ph
=> Работа?q=220v+9+ph
=> Работа
Я проверяю центр персонажа. Это не работает только в случаях 0, 1, 2 и 3.
Запрос: {+(title:480v* content:480v title:3* content:3 title:ph* content:ph)
1 ответ
Один или несколько подстановочных запросов генерируют слишком много совпадений терминов. Запросы с подстановочными знаками переписываются путем перечисления всех соответствующих терминов и создания набора примитивных запросов, соответствующих им, которые объединяются в BooleanQuery
,
Например, запрос title:foo*
, может быть переписан в title:foobar title:food title:foolish title:footpad
в индексе, содержащем эти термины.
По умолчанию BooleanQuery
позволяет максимум 1024 предложения. Если у вас есть более 1024 различных терминов в индексе соответствия title:0*
Например, это, вероятно, ваша проблема.