---
name: "KinoSearch1::Search::BooleanQuery"
section: "3pm"
platform: "linux"
package: "libkinosearch1-perl"
version: "1.01-6+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/KinoSearch1::Search::BooleanQuery"
---

# KinoSearch1::Search::BooleanQuery(3pm)

match boolean combinations of Queries

## NAME

KinoSearch1::Search::BooleanQuery - match boolean combinations of Queries

## SYNOPSIS

```
    my $bool_query = KinoSearch1::Search::BooleanQuery->new;
    $bool_query->add_clause( query => $term_query, occur => 'MUST' );
    my $hits = $searcher->search( query => $bool_query );
```

## DESCRIPTION

BooleanQueries are super-Query objects which match boolean combinations of other Queries.

One way of producing a BooleanQuery is to feed a query string along the lines of `"this AND NOT that"` to a QueryParser object:

```
    my $bool_query = $query_parser->parse( 'this AND NOT that' );
```

It's also possible to achieve the same end by manually constructing the query piece by piece:

```
    my $bool_query = KinoSearch1::Search::BooleanQuery->new;

    my $this_query = KinoSearch1::Search::TermQuery->new(
        term => KinoSearch1::Index::Term->new( 'bodytext', 'this' ),
    );
    $bool_query->add_clause( query => $this_query, occur => 'MUST' );
    my $that_query = KinoSearch1::Search::TermQuery->new(
        term => KinoSearch1::Index::Term->new( 'bodytext', 'that' ),
    );
    $bool_query->add_clause( query => $that_query, occur => 'MUST_NOT' );
```

QueryParser objects and hand-rolled Queries can work together:

```
    my $general_query = $query_parser->parse($q);
    my $news_only     = KinoSearch1::Search::TermQuery->new(
        term => KinoSearch1::Index::Term->new( 'category', 'news' );
    );
    $bool_query->add_clause( query => $general_query, occur => 'MUST' );
    $bool_query->add_clause( query => $news_only,     occur => 'MUST' );
```

## METHODS

### new

```
    my $bool_query = KinoSearch1::Search::BooleanQuery->new;
```

Constructor. Takes no arguments.

### add\_clause

```
    $bool_query->add_clause(
        query => $query, # required
        occur => 'MUST', # default: 'SHOULD'
    );
```

Add a clause to the BooleanQuery.  Takes hash-style parameters:

- •

  **query** - an object which belongs to a subclass of KinoSearch1::Search::Query.

- •

  **occur** - must be one of three possible values: 'SHOULD', 'MUST', or 'MUST\_NOT'.

## COPYRIGHT

Copyright 2005-2010 Marvin Humphrey

## LICENSE, DISCLAIMER, BUGS, etc.

See KinoSearch1 version 1.01.
