The format is based on Keep a Changelog and this project tries to adhere to Semantic Versioning.
- support for parsing Regular expressions like /foo/ (no transformation to Elasticsearch DSL yet)
- basic support for head and tail of expressions (the separators) and for their position (pos and size) in original text
- added auto_head_tail util (use it if you build your tree programatically and want a printable representation)
- tree item now support a clone_item method and a setter for children. This should help with making transformation pattern easier.
- New visitor.TreeVisitor and visitor.TreeTransformer classes to help in processing trees utils.LuceneTreeVisitor, utils.LuceneTreeVisitorV2 and utils.LuceneTreeTransformer are warned as deprecated (but still works).
- support for python 3.8 added, support for python 3.4 and 3.5 dropped
- better printing of Proximity and Fuzzy items (preserve implicit nature of degree)
- raise IllegalCharacterError on illegal character found instead of printing and skipping
- renamed ParseError to ParseSyntaxError, and kept ParseError as a parent exception
- Range item were not checking for bounds type on equality
- Boost item were not checking for force on equality
- Reorganize tests
- support for elasticsearch 7
- added Apache 2 license, while maintaining LGPLv3+
- support for multi_match query in ElasticsearchQueryBuilder.
- SchemaAnalyzer, should count non text fields as not_analyzed
- ElasticsearchQueryBuilder's field_options parameter can accept match_type instead of type to change request type. This is now the prefered way over type which may more easily conflict with request parameters.
- handling sub fields (aka multi-fields)
- fixed bug on equality, having more children in one tree than in the other, was not triggering inequality if first nodes were the same !
- handling special characters escaping
- added iter_wildcards and split_wildcards to have a finer grained search of wildcard in terms
- fixed bug in luqum.utils.LuceneTreeTransformer when removing node
- fixed bug in handling approx operator on multiple words in luqum.elasticsearch.visitor.ElasticsearchQueryBuilder
- test coverage now check branch
- On ElasticSearch query transformation, Luqum was interpreting wildcards in Phrases where as it should not
- adding the zero_terms_query to match_phrase was a mistake (introduced in 0.7.0).
0.7.0 introduced the match query for queries with single words on analyzed fields, whereas before it was using match_phrase. Although this is more coherent, this may cause difficulties on edge cases as this may leads to results different from previous release.
This behaviour might be disabled using a new match_word_as_phrase parameter to luqum.elasticsearch.visitor.ElasticsearchQueryBuilder. Note that this parameter maybe removed in future release. (the field_options might be used instead on a per field basis).
- version introduced because of a bad upload on pypi (Restructured description error)
- Support for named queries (see elastic named queries)
- Helper to automatically create ElasticSearch query builder options from the index configuration, see: luqum.elasticsearch.schema
- a new arg field_options on luqum.elasticsearch.visitor.ElasticsearchQueryBuilder allows to add parameters to field queries. It also permits to control the type of query for match queries.
- now for a query with a single word, if the field is analyzed, the transformation to elastic search query will use a "match" query instead of a "match_phrase". This is more conform in behaviour to what the expression of "query_string" would produce.
- small fix in utils.TreeTransformerV2, which was not removing elements from lists or tuple as stated
- single word matches, are now match, and not match_phrase
- match_phrase has the zero_terms_query field, as for match
- dropped official Python 3.3 support
- Manage object fields in elasicsearch transformation
- minor fix, getting better error message when parsing error is at the end of content
- better handling of nested fields may lead to shorter requests
- A class to transform smartly replace implicit operations with explicit one (OR or AND)
- handling of fields names with numbers followed by a number (better handling of time in expressions)
- now using ply 3.10
- better recursion in the tree transformer util (API Change)
- handling of empty phrases for elasticsearch query builder
a minor release
- Better handling of the implicit operator on printing
- Operations are now supporting multiple operands (instead of only two). This mitigate the construction of very deep trees.
- fixes and improvement of documentation
- The Lucene query checker now checks nested fields before transformation to prevent bad usage
- Support for nested fields in Elastic Search queries
- improved performances by adding a cache to the tree visitor utility
(Note that 0.2 version was skipped)
- Transforming Lucene queries to Elastic Search queries
- Added a new tree visitor TreeVisitorV2 more easy to use
- Improved first tree visitor utility and its tests (API Change)
This was the initial release of Luqum.
- the parser and the tree structure
- the visitor and transformer utils
- the Lucene query consistency checker
- the prettify for pretty printing