为什么Solr数据导入处理程序会散列uniqueKey?(Why does the Solr Data Import Handler hashes the uniqueKey?)
我对Solr 4.6.0有一个非常奇怪的问题。
uniqueKey字段“id”包含每个文档的哈希值,而不是我的字符串值。 如果只在Solr管理员中添加一个带有更新请求处理程序的自定义文档,我会得到我指定的ID值“book_45”,这是正确的。
但是当我使用DIH(数据导入处理程序)进行完全导入时,id字段包含每个文档的哈希,例如“[B @ 53bd370f”而不是我的自定义值。 所以问题必须在DIH中。
我的导入脚本:
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://host/database" user="user" password="password" /> <document name="project"> <entity name="document" transformer="RegexTransformer" query="SELECT CONCAT('book_', b.id) AS book_id, b.slug, b.title, b.isbn, b.publisher, b.releaseYear AS release_year, b.language, b.pageCount AS page_count, b.description, b.print, b.addedBy_id AS added_by_id, b.dt AS created, GROUP_CONCAT(a.name SEPARATOR ';') AS authors FROM Book b LEFT JOIN author_book ab ON ab.book_id = b.id LEFT JOIN Author a ON a.id = ab.author_id GROUP BY b.id "> <field column="book_id" name="id" /> <field column="slug" name="book_slug" /> <field column="title" name="book_title" /> <field column="isbn" name="book_isbn" /> <field column="publisher" name="book_publisher" /> <field column="release_year" name="book_release_year" /> <field column="language" name="book_language" /> <field column="page_count" name="book_page_count" /> <field column="description" name="book_description" /> <field column="print" name="book_print" /> <field column="added_by_id" name="book_added_by_id" /> <field column="created" name="book_created" /> <field column="authors" splitBy=";" name="authors" /> </entity> </document>
schema.xml中的id字段(与默认发布的core collection1中的id字段相同):
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <uniqueKey>id</uniqueKey>
有谁知道我错过了什么?
I have a very strange problem with Solr 4.6.0.
The uniqueKey field "id" contains a hash for every document instead of my string value. If add just one custom document with the update request handler in the Solr admin I get for example the ID value "book_45" that I specified, so that is correct.
But when I do a full import with the DIH (data import handler) then the id field contains a hash for every document like "[B@53bd370f" instead of my custom value. So the problem must be in the DIH.
My import script:
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://host/database" user="user" password="password" /> <document name="project"> <entity name="document" transformer="RegexTransformer" query="SELECT CONCAT('book_', b.id) AS book_id, b.slug, b.title, b.isbn, b.publisher, b.releaseYear AS release_year, b.language, b.pageCount AS page_count, b.description, b.print, b.addedBy_id AS added_by_id, b.dt AS created, GROUP_CONCAT(a.name SEPARATOR ';') AS authors FROM Book b LEFT JOIN author_book ab ON ab.book_id = b.id LEFT JOIN Author a ON a.id = ab.author_id GROUP BY b.id "> <field column="book_id" name="id" /> <field column="slug" name="book_slug" /> <field column="title" name="book_title" /> <field column="isbn" name="book_isbn" /> <field column="publisher" name="book_publisher" /> <field column="release_year" name="book_release_year" /> <field column="language" name="book_language" /> <field column="page_count" name="book_page_count" /> <field column="description" name="book_description" /> <field column="print" name="book_print" /> <field column="added_by_id" name="book_added_by_id" /> <field column="created" name="book_created" /> <field column="authors" splitBy=";" name="authors" /> </entity> </document>
The id field in my schema.xml (which is the same as in the default shipped core collection1):
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <uniqueKey>id</uniqueKey>
Does anyone know what I am missing?
原文:
最满意答案
您可能希望将
tempMoves
变量传递给指令:app.directive('slider', function($compile) { restrict: 'E', scope: { // pass the variable to your directive tempMoves: '=' } ... } // in the markup <slider temp-moves="someVar"></slider>
然后在你的指令中你可以将一个
$watch
应用于tempMoves变量:app.directive('slider', function($compile) { ... link: function(scope, el, attrs) { scope.$watch('tempMoves', function(newValue, oldValue) { if (newValue != oldValue) { // do your $compile here or whatever else it takes to reset the slider } } } }
You would likely want to pass your
tempMoves
variable into the directive:app.directive('slider', function($compile) { restrict: 'E', scope: { // pass the variable to your directive tempMoves: '=' } ... } // in the markup <slider temp-moves="someVar"></slider>
then in your directive you could apply a
$watch
to the tempMoves variable:app.directive('slider', function($compile) { ... link: function(scope, el, attrs) { scope.$watch('tempMoves', function(newValue, oldValue) { if (newValue != oldValue) { // do your $compile here or whatever else it takes to reset the slider } } } }
相关问答
更多-
真实和正确的角度方法是使用页脚指令,为元素添加简单的ng-repeat。 元素列表将由指令初始化。 阿卡: 与指令: module.directive(" ...
-
您可以使用bootstrap来实现此目的。 与您的情况类似,您可以使用componentsnet_v1或component_v2基于变量'someCondition'来引导应用程序。 喜欢 : var someCondition=true; // this will be set true or false based on some condition if(someCondition) { angular.element(document).ready(function() { ...
-
您使用了element.bind('submit', function () { ... }因此每次提交表单时都会调用该函数。 在函数中,我们编译并按原样附加HTML, 无论其中是否包含ng-if 。 您想要做的是放弃像@omri所说的指令,并将HTML代码放在表单中,如下所示: