如何解决ORO-Elasticsearch Datagrid查询字符串`endsWith`表达式
我一直在基于datagrids
中的Oro\Bundle\SearchBundle\Datagrid\Datasource\SearchDatasource
向ORO - 4.1.2
应用其他过滤器。
如果使用基于数据库的搜索引擎,则可以正确应用搜索表达式,尤其是对于像这样的表达式:
Oro\Bundle\SearchBundle\Query\Criteria\Criteria::expr()->startsWith($field,$value);
Oro\Bundle\SearchBundle\Query\Criteria\Criteria::expr()->endsWith($field,$value);
如果使用elasticsearch
,则搜索表达式startsWith
适用正确,
在prefix
查询过滤器中进行转换。但是,endsWith
表达式只是被忽略了,不要t convert in
elasticsearch`查询。
我应该应用一些不同的表达式来获得endsWith
结果吗?
是OroElasticSearchBundle
的问题吗?
解决方法
Oro搜索引擎不支持endsWith
运算符,因为它没有广泛用于搜索。
未实现的另一个原因是ElasticSearch通配符在常规字段中的性能较差。这个问题最近在ES 7.9中得到解决。由于OroCommerce依赖于7.0+,因此它不会在4.1 LTS的核心中实现。
如果要在定制中实现它,则可以使用通配符查询创建一个where零件生成器,以支持“ ends_with”运算符。
如果您希望在下一个LTS中启用该解决方案,也可以为核心Github存储库提供解决方案。有关更多详细信息,请参见How to Contribute to the OroCommerce Source Code
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。