Булева оптимизация

Полнотекстовые запросы автоматически оптимизируются, когда опция поиска boolean_simplify (или соответствующая глобальная настройка) установлена в 1 (включено по умолчанию). Некоторые из изменений, внесённых этой оптимизацией, включают:

  • Лишние скобки: ((A | B) | C) становится (A | B | C); ((A B) C) становится (A B C)
  • Лишние AND NOT: ((A !N1) !N2) становится (A !(N1 | N2))
  • Общий NOT: ((A !N) | (B !N)) становится ((A | B) !N)
  • Общий составной NOT: ((A !(N AA)) | (B !(N BB))) становится (((A | B) !N) | (A !AA) | (B !BB)), если стоимость вычисления N больше суммы стоимости вычисления A и B
  • Общий подтермин: ((A (N | AA)) | (B (N | BB))) становится (((A | B) N) | (A AA) | (B BB)), если стоимость вычисления N больше суммы стоимости вычисления A и B
  • Общие ключевые слова: (A | "A B"~N) становится A; ("A B" | "A B C") становится "A B"; ("A B"~N | "A B C"~N) становится ("A B"~N)
  • Общая фраза: ("X A B" | "Y A B") становится ("("X"|"Y") A B")
  • Общий AND NOT: ((A !X) | (A !Y) | (A !Z)) становится (A !(X Y Z))
  • Общий OR NOT: ((A !(N | N1)) | (B !(N | N2))) становится (((A !N1) | (B !N2)) !N) Обратите внимание, что оптимизация запросов требует времени процессора, поэтому в некоторых случаях для очень простых запросов или вручную оптимизированных запросов вы можете получить лучшие результаты, отключив оптимизацию с помощью boolean_simplify=0.

Запросы типа -dog, которые потенциально могут включать все документы коллекции, по умолчанию не разрешены. Чтобы разрешить их, необходимо указать not_terms_only_allowed=1 либо в качестве глобальной настройки, либо в качестве опции поиска.

Last modified: August 28, 2025