A Lucene查询解析器,生成ElasticSearch查询等!
项目描述
luqum - 使用PLY的Python Lucene查询解析器
“luqum”(类似于LUcene QUery Manipolator)是一个工具,用于解析以Lucene Query DSL编写的查询,并构建一个抽象语法树以检查、分析或操纵搜索查询。
它允许丰富Lucene Query DSL的含义(例如支持嵌套对象搜索或对某些字段进行特殊处理),并将lucene DSL查询转换为原生的ElasticSearch JSON DSL
有了luqum,您的用户可以继续编写如下查询: author.last_name:Smith OR author:(age:[25 TO 34] AND first_name:John),您将能够利用ElasticSearch查询DSL,并控制每个搜索词的确切含义。
Luqum双许可Apache2.0和LGPLv3。
与Python 3.6+兼容
安装
pip安装luqum
依赖项
PLY >= 3.11
完整文档
luqum的更改日志
格式基于Keep a Changelog,并且该项目试图遵守语义版本控制。
0.13.0 - 2023-03-24
新增
支持无界范围
添加了对开区间范围的支持,即一个词前面的不等式运算符。在树形结构中,<被称为To,>被称为From。
此外,还添加了一个TreeTransformer,用于将这些开区间转换为更传统的Range对象。
为了正确支持转义,对转义序列的工作方式进行了调整。经过仔细评估Apache Lucene如何处理转义序列,发现可以转义随机字符,即使它们会导致未知的转义序列:转义字符总是被返回。这使得支持诸如<=foo之类的操作变得更加简单。
ElasticsearchQueryBuilder中没有提供支持。
0.12.1 - 2023-02-08
已修复
未知操作和提升的优先级(#89,感谢@JSCU-CNI)
0.12.0 - 2022-10-13
已更改
提升可以是隐式的;默认情况下,提升因子为1
新增
添加对Lucene和Elasticsearch布尔操作的支持(#71,感谢@linefeedse)
引入布尔操作
在ElasticSearch转换器中添加其解析
将其作为未知操作的可能解析器添加(查询中没有显式操作符)
将E元素设置为ElasticsearchQueryBuilder的属性(#75,感谢@qcoumes)
这允许覆盖EMust、EWord等元素,而无需覆盖ElasticsearchQueryBuilder的方法。
显式支持Python 3.9和Python 3.10(#76)
添加一个线程安全的解析函数(#82)
已修复
将TokenValue.__str__返回值转换为字符串(#74,感谢@delkopiso)
隔离的逗号应解析为单词(#80)
更好地处理转义的通配符
文档
将布尔操作添加到文档中
修复快速入门文档
更新readthedocs说明
CI
使用github actions运行测试
更新所有开发库
从nose切换到pytest,因为nose与python3.10不兼容
删除旧的travis测试
0.11.0 - 2021-01-06
已更改
完全修改了命名模块和auto_name函数,因为它们本身并不实用。
新增
添加了构建关于请求与结果匹配原因的可视化解释的工具(利用Elasticsearch命名查询)。
添加了一个访问者和转换器,在访问树时跟踪元素路径。
已修复
在将luqum树转换为Elasticsearch查询时处理名称,并添加了集成测试。
0.10.0 - 2020-09-22
新增
支持解析正则表达式,如/foo/(尚未转换为Elasticsearch DSL)
基本支持表达式的开头和结尾(分隔符)以及它们在原始文本中的位置(pos和size)
添加了auto_head_tail实用工具(如果您以程序方式构建树并希望有一个可打印的表示,请使用它)
树项现在支持clone_item方法和子项设置器。这应该有助于使转换模式更容易。
添加了新的visitor.TreeVisitor和visitor.TreeTransformer类,以帮助处理树(utils.LuceneTreeVisitor、utils.LuceneTreeVisitorV2和utils.LuceneTreeTransformer被警告为已弃用(但仍然可用))。
已更改
添加了对python 3.8的支持,取消了对python 3.4和3.5的支持
更好地打印了邻近性和模糊项(保留度数的隐式性质)
在发现非法字符时引发IllegalCharacterError而不是打印和跳过
将ParseError重命名为ParseSyntaxError,并保留ParseError作为父异常
已修复
范围项在相等时没有检查边界类型
提升项在相等时没有检查强制
重新组织测试
0.9.0 - 2020-07-29
新增
支持Elasticsearch 7
0.8.1 - 2019-11-01
新增
添加Apache 2许可,同时保持LGPLv3+
0.8.0 - 2019-08-02
新增
在ElasticsearchQueryBuilder中支持multi_match查询。
已修复
SchemaAnalyzer应将非文本字段视为not_analyzed
ElasticsearchQueryBuilder的field_options参数可以接受match_type代替type来更改请求类型。这是现在比type更受欢迎的方法,因为后者可能会更容易与请求参数冲突。
0.7.5 - 2018-10-29
新增
处理子字段(即多字段)
已修复
在等式中修复了错误,一个树中的子节点比另一个树多,如果第一个节点相同,则不会触发不等式!
0.7.4 - 2018-08-28
新增
处理特殊字符转义
添加了iter_wildcards和split_wildcards,以便在术语中进行更细粒度的通配符搜索
已修复
修复了在luqum.utils.LuceneTreeTransformer中删除节点时的错误
修复了在luqum.elasticsearch.visitor.ElasticsearchQueryBuilder中处理多个单词上的近似运算符时的错误
测试覆盖率现在检查分支
0.7.3 - 2018-06-08
已修复
在ElasticSearch查询转换中,Luqum将短语中的通配符解释为通配符,而它不应该这样
0.7.2 - 2018-05-14
已修复
向match_phrase添加了错误的zero_terms_query(在0.7.0版本中引入)。
新增
0.7.0引入了用于单词查询的match查询,而之前它使用的是match_phrase。虽然这更一致,但这可能会在边缘情况下引起困难,因为这可能会导致与先前版本不同的结果。
可以使用新参数match_word_as_phrase来禁用这种行为,该参数传递给luqum.elasticsearch.visitor.ElasticsearchQueryBuilder。请注意,此参数可能在未来的版本中删除。(每个字段的字段选项可能被用于替代)。
0.7.1 - 2018-03-20
已修复
由于在pypi上的错误上传(重构描述错误)而引入的版本
0.7.0 - 2018-03-20
新增
支持命名查询(见Elastic命名查询)
辅助程序,用于从索引配置自动创建ElasticSearch查询构建器选项,请参阅:luqum.elasticsearch.schema
luqum.elasticsearch.visitor.ElasticsearchQueryBuilder上的新参数field_options允许向字段查询添加参数。它还允许控制匹配查询的查询类型。
现在对于单个单词的查询,如果字段是分析过的,则将使用“match”查询而不是“match_phrase”。这与“query_string”表达式的行为更一致。
已修复
在utils.TreeTransformerV2中的小修复,它没有按照所述从列表或元组中删除元素
单词匹配现在是match,而不是match_phrase
match_phrase有与match相同的zero_terms_query字段
已更改
取消官方Python 3.3支持
0.6.0 - 2017-12-12
新增
管理Elasticsearch转换中的对象字段
已修复
次要修复,当解析错误在内容末尾时,获取更好的错误消息
已更改
更好的嵌套字段处理可能导致更短的请求
0.5.3 - 2017-08-21
新增
一个类,用于智能地用显式操作(OR或AND)替换隐式操作
已修复
处理字段名称后面跟有数字的字段(更好地处理表达式中的时间)
已更改
现在使用ply 3.10
0.5.2 - 2017-05-29
已更改
在树转换实用程序中更好的递归(API更改)
已修复
处理Elasticsearch查询构建器的空短语
0.5.1 - 2017-04-10
一个小版本
已更改
改进了打印时的隐式运算符处理
0.5.0 - 2017-04-04
已更改
操作现在支持多个操作数(而不仅仅是两个)。这减轻了非常深层的树结构。
已修复
修复和改进了文档
0.4.0 - 2016-12-05
已更改
Lucene查询检查器现在在转换之前检查嵌套字段,以防止错误使用
0.3.1 - 2016-11-23
新增
支持Elastic Search查询中的嵌套字段
已更改
通过向树访问器实用程序添加缓存来提高性能
0.3 - 2016-11-21
(注意,省略了0.2版本)
新增
将Lucene查询转换为Elastic Search查询
添加了一个新的树访问器TreeVisitorV2,更容易使用
已修复
改进了第一个树访问器实用程序及其测试(API更改)
0.1 - 2016-05-17
这是Luqum的初始版本。
新增
解析器和树结构
访问者和转换工具
Lucene查询一致性检查器
美化打印
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
构建分布
luqum-0.13.0.linux-x86_64.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1af57bc37637014460858a2ae4737760015ed0b9d8b23d61f198de4736c174f5 |
|
MD5 | f24572e4ea642ac8f4e39afd5e2d93e7 |
|
BLAKE2b-256 | 11feeb6ae5039c704846edd07e36b9895c86c4340ae4bb73292de5cfe80bc5f9 |
luqum-0.13.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bf0ac6eb3ca8a6a579ff6dd4bd9d88fbba5d9f559b4f5d864f99c4a6b5061853 |
|
MD5 | 65c2a2b1673c0b1c4dee52c0d44e3145 |
|
BLAKE2b-256 | c134cae9016cb1d9c1f1e5439f0570080848ed658cbc3e1b39e180812fce1a43 |