Solr DataImportHandler缓存支持多个值

时间:2014-05-12 13:30:34

标签: caching solr dataimporthandler

我正在尝试在数据导入处理程序配置中为某些实体使用缓存。不知何故,如果我使用缓存,我只获得我的多值字段的第一个值。我的配置如下所示:

<entity name="product" query="SELECT product_id FROM Product WHERE 1">
    <entity name="strength" query="SELECT *
        FROM Strength WHERE product_id = '${product.product_id}'">
        <entity name="form" query="SELECT CONCAT(parent_route,'|',form_name) AS form_name, LOWER(CONCAT_WS('\n',form_name,parent_route)) AS form_name_s,
                CAST(form_id AS CHAR(10)) AS form_id_string FROM Form WHERE form_id = '${strength.form_id}'"
                transformer="RegexTransformer" 
                cacheImpl="SortedMapBackedCache" cacheLookup="strength.form_id" cacheKey="form_id_string">
                    <field column="form_name" name="form_name" />
                    <field column="form_name_s" splitBy="\n" />
        </entity>
    </entity>
</entity>

实体“form”应返回两行,但如果启用了缓存,则只有第一行可见。 Solr没有能力缓存多行,或者我做错了什么?我的Solr版本是4.1。

1 个答案:

答案 0 :(得分:0)

删除缓存查询的where部分时,问题已解决。我不确定以下配置是否理想,但据我所知,目的是减少查询次数。

<entity name="product" query="SELECT product_id FROM Product WHERE 1">
    <entity name="strength" query="SELECT *
        FROM Strength WHERE product_id = '${product.product_id}'">
        <entity name="form" query="SELECT CONCAT(parent_route,'|',form_name) AS form_name, LOWER(CONCAT_WS('\n',form_name,parent_route)) AS form_name_s,
                CAST(form_id AS CHAR(10)) AS form_id_string FROM Form"
                transformer="RegexTransformer" 
                cacheImpl="SortedMapBackedCache" cacheLookup="strength.form_id" cacheKey="form_id_string">
                    <field column="form_name" name="form_name" />
                    <field column="form_name_s" splitBy="\n" />
        </entity>
    </entity>
</entity>