---
name: "Lucene::QueryParser"
section: "3pm"
platform: "linux"
package: "liblucene-queryparser-perl"
version: "1.04-6"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Lucene::QueryParser"
---

# Lucene::QueryParser(3pm)

Turn a Lucene query into a Perl data structure

## NAME

Lucene::QueryParser - Turn a Lucene query into a Perl data structure

## SYNOPSIS

```
  use Lucene::QueryParser;
  my $structure = parse_query("red and yellow and -(coat:pink and green)");
```

`$structure` will be:

```
 [ { query => 'TERM', type => 'NORMAL', term => 'red' },
   { query => 'TERM', type => 'NORMAL', term => 'yellow' },
   { subquery => [
        { query => 'TERM', type => 'NORMAL', term => 'pink', field => 'coat' },
        { query => 'TERM', type => 'NORMAL', term => 'green' }
     ], query => 'SUBQUERY', type => 'PROHIBITED'
   }
 ]
```

## DESCRIPTION

This module parses a Lucene query, as defined by  http://lucene.sourceforge.net/cgi-bin/faq/faqmanager.cgi?file=chapter.search&toc=faq#q5

It deals with fields, types, phrases, subqueries, and so on; everything handled by the `"SimpleQuery"` class in Lucene. The data structure is similar to the one given above, and is pretty self-explanatory.

The other function, `"deparse_query"` turns such a data structure back into a Lucene query string. This is useful if you've just been mucking about with the data.

### PLUCENE

Note for people using Plucene: the big arrayref and the hashes in the output of `"parse_query"` are actually objects. They're not `"Plucene::Query"` objects, because then everyone who wanted to do search queries would have to pull in Plucene, which is a bit unfair. However, they can be turned into `"Plucene::Query"`s by calling `"to_plucene"` on them. The argument to `"to_plucene"` should be the default field to search if none is supplied.

### EXPORT

Exports the `"parse_query"` and `"deparse_query"` functions.

## AUTHOR

Simon Cozens, \<simon@kasei.com\>

## COPYRIGHT AND LICENSE

Copyright 2003 by Kasei

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
