2014-05-09 1 views
0

아래의 매개 변수를 사용하여 검색하려고합니다. 왜이 예외가 발생하게되는지 궁금합니다.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 =>

내가 중심 문자를 확인하고 작업. 와일드 카드 쿼리의 {+(title:480v* content:480v title:3* content:3 title:ph* content:ph)

답변

1

하나 이상을 생성하는 너무 많은 용어가 일치 : 그것은 0, 1, 2, 3

쿼리의 경우에만 작동하지 않습니다. 와일드 카드 쿼리는 일치하는 용어를 모두 열거하고 BooleanQuery에 결합 된 기본 쿼리 세트를 작성하여 다시 작성합니다.

예를 들어, title:foo* 쿼리는 title:foobar title:food title:foolish title:footpad으로 해당 용어가 포함 된 인덱스로 다시 쓸 수 있습니다.

기본적으로 BooleanQuery은 최대 1024 개의 절을 허용합니다. 1024 개 이상의 다른 용어가 인 경우, 예를 들어 title:0*과 일치하는 색인에 문제가있을 수 있습니다.