QuerySintax do Lucene

Boa tarde.

Gostaria de saber se alguém já se deparou com problemas lógicos na sintaxe do Lucene (engine para busca textual). Meu caso é o seguinte:

Fiz as seguintes pesquisas:

pesquisa1: livro >> retornou 87 documentos
pesquisa2: constitucional >> retornou 97 documentos
pesquisa3: livro NOT constitucional >> retornou 75 documentos
pesquisa4: constitucional NOT livro >> retornou 64 documentos
pesquisa5: livro AND constitucional >> retornou 97 documentos (deveria ser 12)
pesquisa6: livro OR constitucional >> retornou 100 documentos
pesquisa7: (livro OR constitucional) NOT (livro AND constitucional) >> retornou 80 documentos

Vocês conseguem ver as inconsistências? Por exemplo: se tenho 87 documentos com o termo “livro”, e pesquiso “livro NOT constitucional” (documentos com “livro” mas sem “constitucional”) e recebo 75 documentos, “livro AND constitucional” deveria retornar 12 documentos, e não 97. Além disso, “livro OR constitucional” retorna 100 = “livro” + “constitucional” - “livro AND constitucional” = 87 + 97 - 97 = 87 (teoria dos conjuntos), logo 100 = 87 (Falso!!!).

Fiz os testes usando os operadores + (obrigação) e - (proibição) também, mas não funcionou.

Alguém aqui já teve problema com isso? Será que o processador da sintaxe do Lucene está com bug?

E aí pessoa? Alguém já teve algum problema parecido, ou eu que fiz algo de errado no processo?

Parece que o TopDocCollector, usado para fazer um tipo de top N com os documentos indexados, estava influenciando no resultado, fazendo parecer que havia erro de lógica. Mas ainda não tenho uma solução. Sabendo melhor do problema, posto aqui para todos.