Skip to main content

A simple query builder for Amazon Cloudsearch structured query parser.

Project description

A simple query builder for Amazon Cloudsearch Structured query parser.

travis coveralls.io downloads latest version license requirements status

Features

Caution

  • At the moment, this library is compatible only to Structured Search Syntax .

  • It does not have any plans corresponding to the other query parser(lucene, dismax, simple).

  • If you want the lucene query builder, it’s a good idea is to use the following library.

  • This library does not handle to generate queries that are not related to Structured Search Syntax. Ex) size, facets …

Set up

Make environment with pip:

$ pip install csquery

Usage

and

Syntax: (and boost=N EXPRESSION EXPRESSION … EXPRESSIONn)

from csquery.structured import and_, field

q = and_(title='star', actors='Harrison Ford', year=('', 2000))
q() #=> (and title:'star' actors:'Harrison Ford' year:{,2000])

# with option
q = and_({'title': 'star'}, {'title': 'star2'}, boost=2)
q() #=> (and boost=2 title:'star' title:'star2')

# another writing
and_({'title': 'star'}, {'actors': 'Harrison Ford'}, {'year': ('', 2000)})
and_(field('star', 'title'), field('Harrison Ford', 'actors'), field(('', 2000), 'year'))

or

Syntax: (or boost=N EXPRESSION1 EXPRESSION2 … EXPRESSIONn)

from csquery.structured import or_, field

q = or_(title='star', actors='Harrison Ford', year=('', 2000))
q() #=> (or title:'star' actors:'Harrison Ford' year:{,2000])

# with option
q = or_({'title': 'star'}, {'title': 'star2'}, boost=2)
q() #=> (or boost=2 title:'star' title:'star2')

not

Syntax: (not boost=N EXPRESSION)

from csquery.structured import not_, and_

q = not_(and_(actors='Harrison Ford', year=('', 2010)))
q() #=> (not (and actors:'Harrison Ford' year:{,2010]))

# with option
q = not_(and_(actors='Harrison Ford', year=('', 2010)), boost=2)
q() #=> (not boost=2 (and actors:'Harrison Ford' year:{,2010]))

near

Syntax: (near field=FIELD distance=N boost=N ‘STRING’)

from csquery.structured import near

q = near('teenage vampire', boost=2, field='plot', distance=2)
q() #=> (near field=plot distance=2 boost=2 'teenage vampire')

phrase

Syntax: (phrase field=FIELD boost=N ‘STRING’)

from csquery.structured import phrase

q = phrase('star', boost=2, field='title')
q() #=> (phrase field=title boost=2 'star')

prefix

Syntax: (prefix field=FIELD boost=N ‘STRING’)

from csquery.structured import prefix

q = prefix('star', boost=2, field='title')
q() #=> (prefix field=title boost=2 'star')

range

Syntax: (range field=FIELD boost=N RANGE)

from csquery.structured import range_

q = range_((1990, 2000))
q() #=> (range [1990,2000])
q = range_((None, 2000))
q() #=> (range {,2000])
q = range_((1990,))
q() #=> (range [1990,})

# with opition
q = range_((1990, 2000), field='date', boost=2)
q() #=> (range field=date boost=2 [1990,2000])

# another writing
q = range_('[1990,2000]')
q() #=> (range [1990,2000])

q = range_(('', 2000))
q() #=> (range {,2000])
q = range_('{,2000]')
q() #=> (range {,2000])

q = range_((1990, None))
q() #=> (range [1990,})
q = range_((1990, ''))
q() #=> (range [1990,})
q = range_('[1990,}')
q() #=> (range [1990,})

term

Syntax: (term field=FIELD boost=N ‘STRING’|VALUE)

from csquery.structured import term

q = term(2000, field='year', boost=2)
q() #=> (term field=year boost=2 2000)

q = term('star', field='title', boost=2)
q() #=> (term field=title boost=2 'star')

Complex query sample

from csquery.structured import and_, or_, not_, term

q = and_(
    not_('test', field='genres'),
    or_(
        term('star', field='title', boost=2),
        term('star', field='plot')
    )
)
q() #=> (and (not field=genres 'test') (or (term field=title boost=2 'star') (term field=plot 'star')))

Using with boto

http://boto.readthedocs.org/en/latest/ref/cloudsearch2.html

from csquery.structured import and_
from boto.cloudsearch2.layer2 import Layer2

conn = Layer2(
    region='ap-northeast-1',
    aws_access_key_id=[AWS ACCESSS KEY ID],
    aws_secret_access_key=[AWS SECRET KEY],
)
domain = conn.lookup('search_domain_name')
search_service = domain.get_search_service()

q = and_(title='star', actors='Harrison Ford', year=('', 2000))
result = search_service.search(q=q(), parser='structured')

Python Support

  • Python 2.7, 3,3, 3.4 or later.

License

  • Source code of this library Licensed under the MIT License.

See the LICENSE.rst file for specific terms.

Authors

  • tell-k <ffk2005 at gmail.com>

Contributors

Thanks.

  • @podhmo

  • @furi

History

0.1.2(Nov 18, 2015)

  • Fixed escape bug. #2.

0.1.1(Nov 6, 2015)

  • Fixed bug. #1.

0.1.0(Jun 8, 2015)

  • First release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

csquery-0.1.2.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

csquery-0.1.2-py2.py3-none-any.whl (9.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file csquery-0.1.2.tar.gz.

File metadata

  • Download URL: csquery-0.1.2.tar.gz
  • Upload date:
  • Size: 8.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for csquery-0.1.2.tar.gz
Algorithm Hash digest
SHA256 39ed266e33bc8bc41083f7e029f6f72f2941216c19a0bc151017508e0edf569f
MD5 ee9564244984733a203d06b43891a5a6
BLAKE2b-256 6e4316e786e0ef25e73a5b7b981eed6fc6f50a2f15e35b39f6fa947fa9ccb12f

See more details on using hashes here.

File details

Details for the file csquery-0.1.2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for csquery-0.1.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 f4ea3115c33e6a93dea3c913dd3f50d1fe9bac726acaefe183ade02b3a16b281
MD5 a2a7c636f45b4b04e1717452b0c38f20
BLAKE2b-256 13b1609b286bf78bfa7c5980026d26a74efd97ed79e1dc42406638697bc3ee46

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page