@Test
public void test_query_with_lucene_reserved_chars() throws Exception {

    assertThat(hasLuceneOperators("a   b")).isFalse();
    assertThat(hasLuceneOperators(" a b  ")).isFalse();
    assertThat(hasLuceneOperators("a\\/b")).isFalse();
    assertThat(hasLuceneOperators("a & b")).isFalse();
    assertThat(hasLuceneOperators("a + b")).isFalse();
    assertThat(hasLuceneOperators("a - b")).isFalse();
    assertThat(hasLuceneOperators("a | b")).isFalse();
    assertThat(hasLuceneOperators("a \\\"b c\\\"")).isFalse();
    assertThat(hasLuceneOperators("a b, c. de f.g")).isFalse();
    assertThat(hasLuceneOperators("a || b")).isFalse();
    assertThat(hasLuceneOperators("a OR b")).isFalse();
    assertThat(hasLuceneOperators("a /b/")).isTrue();
    assertThat(hasLuceneOperators("f:a")).isTrue();
    assertThat(hasLuceneOperators("a f:b")).isTrue();
    assertThat(hasLuceneOperators("n:[1 TO 5]")).isTrue();
    assertThat(hasLuceneOperators("n:>10")).isTrue();
    assertThat(hasLuceneOperators("*a*")).isTrue();
    assertThat(hasLuceneOperators("?a?")).isTrue();
    assertThat(hasLuceneOperators("+a -b")).isTrue();
    assertThat(hasLuceneOperators("a \"b c\"")).isTrue();
    assertThat(hasLuceneOperators("a && b")).isTrue();
    assertThat(hasLuceneOperators("\"a || b\"")).isTrue();
    assertThat(hasLuceneOperators("a AND b")).isTrue();
    assertThat(hasLuceneOperators("a NOT b")).isTrue();
    assertThat(hasLuceneOperators("a^")).isTrue();
    assertThat(hasLuceneOperators("a^2")).isTrue();
    assertThat(hasLuceneOperators("a~")).isTrue();
    assertThat(hasLuceneOperators("a~2")).isTrue();
}