Solr dataimport处理程序cacheImpl不检索行

时间:2015-05-28 08:47:47

标签: mysql solr

我目前正在开发一个dataimport处理程序,它从MySQL中检索数据以便快速搜索。它包括导入根实体jQuery('#hexpand').animate({width:151,height:151},400); 和一些子实体(CabinCategoryFaresCruiseRouteDay)。

此导入有效,但由于例如...之间的关系非常慢。 ShipCabinCategoryFares是多对一的,因此在Cruise被解雇时有许多相同的查询。

为了缓解这种情况,我试图在子实体上实现Cruise缓存。在一个片段下面,原作非常大。

SortedMapBackedCache

对于从<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>` 读取的每个字段,都会返回NULL。我可以从日志中看出Cruise正在运行dataimporthandler查询,但它不会在此之后返回任何结果或任何错误。它似乎无法在Cruise上找到任何匹配,但登录cacheLookup课程是不存在的,我完全失去了什么&#39; s发生了,或者说它为什么不发生。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

发现问题:
1. Solr / DIHCacheSupport.java中的错误:https://stackoverflow.com/a/21732907/3012497
(cacheKey在进程中的某个地方得到大写,cacheLookup不需要总是使用大写的cacheLookup) 2. Cruise实体的查询使用分组函数(GROUP_CONCAT),但没有GROUP BY子句。这不是一个未缓存的问题(因为WHERE子句),但仍然只返回一行没有位置。
3. DIHCacheSupport似乎只能使用字符串键,int键会导致日志中没有显示的异常。

希望这可能会节省几个小时。