[solr ] parentDeltaQuery 不能执行的问题,哪位朋友遇到过啊?

chuxu000 2011-03-09
我在做增量索引的时候在父的entity 下嵌套了个子的entity但 子的entity 变化后父的entity根本无法察觉并自动增量的更新,不知道是不是solr自身的问题,还是我配置的那里有问题,还请做过的朋友指点一下,不胜感激!
chuxu000 2011-03-09
<dataConfig>
    <dataSource name="ds-store" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test" user="root" password="root"/>
    <document>
            <entity name="parent" dataSource="ds-store" pk="id"
			             query="SELECT
					p.id,
					p.name,
					p.isdeleted
					FROM
					parent AS p" 
					deltaImportQuery="SELECT
					p.id,
					p.name,
				                p.isdeleted
					FROM
					parent AS p
					 where p.id='${dataimporter.delta.id}' and p.isdeleted='0' "
                       
   			            deltaQuery="SELECT
					p.id,
					p.name,
					p.isdeleted
					FROM
					parent AS p
                                                                               where p.last_modified > '${dataimporter.last_index_time}' and p.isdeleted='0'"
						
			      deletedPkQuery="SELECT
						p.id,
						p.name,
						p.isdeleted
						FROM
						parent AS p
						where p.isdeleted='1'"	
	                    
						>
				
						<field column="id" name="id"/>
						<field column="name" name="name"/>
						<field column="isdeleted" name="isdeleted"/>
						
				   
					<entity name="child" dataSource="ds-store" pk="pid"
					 query="SELECT
							c.name as cname,
							c.id as pid
							FROM
							child AS c where c.pid='${parent.id}'"
					 deltaQuery="SELECT			
							c.id
							 FROM
							child AS c where c.last_modified > '${dataimporter.last_index_time}'"
                                                                                parentDeltaQuery=" SELECT
							p.id
							FROM
							parent AS p where p.id='${child.pid}'">
			        <field column="cname" name="cname"/>		
			       </entity>	
					
	</entity>
			
			
             		
    </document>
</dataConfig>

 

 

chuxu000 2011-03-09
详细的配置就是上面,还请各位指导下!
chuxu000 2011-03-11
查询了下官方说是个bug ,而且说已经修复了,应该是在1.5中发布吧!
illu 2011-03-12
原来是bug   没用过parentDeltaQuery。。。
zy19982004 2011-03-22
是你写错了吧
<entity  name="child"></entity>里面deltaQuery得到上次索引更新时间以来有更新的实体的主键id。接着parentDeltaQuery 从deltaQuery中取得当前表中更新的行。

也就是你deltaQuery取得了id,而你parentDeltaQuery 去调用的却是pid。

应该是deltaQuery="SELECT c.id as pid  FROM  child AS c...

没有试验,仅供参考。
Global site tag (gtag.js) - Google Analytics