1

我一直在研究datagrids基于Oro\Bundle\SearchBundle\Datagrid\Datasource\SearchDatasourcein应用额外的过滤器ORO - 4.1.2。在基于 DB 的搜索引擎的情况下,搜索表达式应用得当,特别是对于像:

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吗?

4

1 回答 1

2

Oro 搜索引擎不支持该endsWith运算符,因为它没有广泛用于搜索。

它未实现的另一个原因是 ElasticSearch 通配符在常规字段中的性能不佳。这个问题最近在 ES 7.9 中得到解决。因为 OroCommerce 依赖于 7.0+,它不会在 4.1 LTS 的核心中实现。

如果您想在自定义中实现它,您可以使用通配符查询创建一个 where 部分构建器来支持“ends_with”运算符。

如果您希望在下一个 LTS 中启用此解决方案,您还可以将解决方案贡献给核心 Github 存储库。有关更多详细信息,请参阅如何为 OroCommerce 源代码做出贡献

于 2020-09-25T15:12:27.320 回答