您的位置:首页 > Web前端 > JavaScript

Solr在admin界面使用(Solr Command (raw XML or JSON))提交多份documents的方法

2017-08-14 22:43 393 查看
      Solr有时候需要一下导入很多个document,在solr的admin界面的Solr Command (raw XML or JSON)可以实现这一方式。但是我开始导入的时候发现submit没有报错,但是数据并没有add成功,后面发现有一个有地方需要特别注意。

       当我们需要导入一个document时。在admin界面我们可以通过这样导入: 

     在下图一的地方选择“json”(因为我要导入的数据是json格式,还支持CVS、XML等格式),在2的位置放入要导入的document(只能添加一个document),点击submit就可以提交了。下面有三个框框可以修改的三个属性(commit within 、Overwrite、boost)。这个很重要,下面会讲到。

    但很多时候我们需要导入的是大量的document,如果我们采用上面的方式肯定不行。

     所以就有下面这种方式:在上图 1 的位置选Solr Command(rawXML orJSON)然后在2的位置可以导入多个document。仔细观察这两个图的不同。有没有发现在数字 2的下面有不同,第一个界面有三个属性可以选,第二个图没有了。所以这个就是提交多个document跟提交一个document不同的地方,也是特别需要注意的地方。

    下面是json数据的组织方式:

    {"add":{ "doc": YOUR_TEXT_AREA_INPUT,
"boost": BOOST_FORM_INPUT,
"overwrite": CHECKBOX_INPUT,
"commitWithin": COMMIT_WITHIN_FORM_INPUT }
{ "doc": YOUR_TEXT_AREA_INPUT,
"boost": BOOST_FORM_INPUT,
"overwrite": CHECKBOX_INPUT,
"commitWithin": COMMIT_WITHIN_FORM_INPUT }
{ "doc": YOUR_TEXT_AREA_INPUT,
"boost": BOOST_FORM_INPUT,
"overwrite": CHECKBOX_INPUT,
"commitWithin": COMMIT_WITHIN_FORM_INPUT }
}


doc : 需要插入的document

boost :权重(非必要,没设置系统默认值为1.0)

overwrite:是否覆盖旧document根据设置的uniqueKey和自动生成的_version_判断数据是否是最新的。

commitWithin :必须在指定的时间内提交完成,否则做提交超时处理,单位为毫秒。(必要!!!,这个很重要,一定要有,不然你会发现没有报错但是数据就是没有,没有add成功)

必须设置commitWithin,才可以add或者update成功,当然也有可以是我的solr的配置没设置对,但是目前的解决办法就是这个。

     给出一个数据样例吧

    {"add":{"doc":
{"unid":"1",
"name":"张三",
"school":"中南大学"
},
"overwrite":true,
"commitWithin":3000
},
"add":{"doc":
{ "unid":"2",
"name":"李三",
"school":"湖南大学"
},
"overwrite":true,
"commitWithin":3000
},
"add":{"doc":
{ "unid":"3",
"name":"李四",
"school":"湖南大学"
},
"overwrite":true,
"commitWithin":3000
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: