Solr 数据导入处理程序 cacheImpl 不检索行

Solr dataimport handler cacheImpl does not retrieve rows

我目前正在研究从 MySQL 检索数据以进行快速搜索的数据导入处理程序。它由根实体 CabinCategoryFares 和一些子实体(CruiseRouteDayShip)的导入组成。

此导入有效,但速度非常慢,因为例如CabinCategoryFaresCruise 是多对一的,因此在 Cruise 上有许多相同的查询被触发。

为了缓解这个问题,我正在尝试在子实体上实施 SortedMapBackedCache 缓存。下面一个snippet,原来是挺大的

<document name="Cruises">
  <entity name="CabinCategoryFare" transformer="RegexTransformer" query="SELECT CabinCategoryFare.cruise_id FROM CabinCategoryFare">
    <entity name="Cruise"  cacheImpl="SortedMapBackedCache" cacheKey="Cruise.id" cacheLookup="CabinCategoryFare.cruise_id"query="SELECT Cruise.id FROM Cruise">
    </entity>
  </entity>`

此 returns NULL 用于从 Cruise 读取的每个字段。我可以从日志中看出 dataimporthandler 是 运行 Cruise 查询,但之后它不会返回任何结果或任何错误。似乎无法在 cacheLookup 上找到任何匹配项,但登录 DIHCacheSupport class 是不存在的,我完全不知道发生了什么,或者更确切地说为什么它没有发生。

有什么想法吗?

发现问题:
1. Solr/DIHCacheSupport.java 错误:
(cacheKey 在此过程中某处变为大写,而 cacheLookup 不会,因此需要始终使用大写的 cacheLookup)
2. Cruise 实体的查询使用分组函数(GROUP_CONCAT),但没有GROUP BY 子句。这不是未缓存的问题(因为 WHERE 子句)但仍然只有 return 一行没有 where.
3. DIHCacheSupport 似乎只适用于字符串键,int 键会导致异常,不会出现在日志中。

希望这可以节省一些人的时间。