进入Solr后台页面,选择一个核,点击 Documents
,进入 Document
管理标签:
一、添加 Document
在《Solr初探(2)——域管理》中我们已经说过了,id 是一个 Document 必须要包含的 field,让我们新建一个 Document
,类型为 JSON
:
1 | { |
在查询页中点击 Execute Query
进行查询,就能看见我们添加的这个 Doucment
了:
二、更新 Document
修改一个 Document
十分简单,只需要指定 id
,Solr 就会先删除 id 为指定 id 的 Document
,然后将我们输入的 Document
保存起来,达到更新的目的(内部实现是先删后添)。
当我们输入:
1 | { |
重新查询:
1 | { |
三、删除 Document
删除一个 Document
比较特殊,使用 JSON 无法实现,我们将 Document
类型修改为 XML
,将 id 为 1 的 Document 删除掉:
1 | <delete> |
重新查询:
1 | { |
除了上面哪种方法,还可以指定删除条件:
1 | <delete> |
因为可以始用正则表达式,那么举一反三,删除所有 Document,就是:
1 | <delete> |
四、导入数据
注:数据库文件使用宜立方商城的数据库,点击这里下载 sql 文件。
Step1: 导入依赖包
在 core1
的目录下新建 lib
文件夹(如果有,无需建立),从 Solr 源码包的 dist 文件夹中导入两个 solr-dataimporthandler
包,以及一个 mysql
驱动包。
Step2: 创建导入数据的 Handler
编辑 core1/conf
目录下的 solrconfig.xml
文件,在文件末尾添加上对 requestHander
的配置:
1 | <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> |
Step3: 配置 data-config.xml
我们刚刚在 requestHander
中指定了我们数据导入的配置文件,因此我们在 solrconfig.xml
的同级目录下,即 core1/conf
目录下新建 data-config.xml
文件:
编辑文件内容:
1 |
|
配置文件总共两个部分,第一个部分是数据库连接信息,第二个部分是在document
中建立了一个实体,参数一个是name,一个是sql查询语句,其内部对查询结果的每一项映射Solr的field
。
Step4: 配置field
在上一步中,我们将查询结果的每一项映射到了 Solr 的 filed
的上,但是除了 id
是存在的以外,其他都不存在,因此我们需要手动添加。
编辑 managed-schema
文件,在末尾新增相关的 field,如果你理解了《Solr初探(2)——域管理》,这里的配置就很简单了。
解释:
(1)创建了 item_title
、item_sell_point
、item_price
三个域,其中前两个类型为 IK 分词器的类型,第三个为 int 类型。
(2)创建了 item_keywords
域,将 item_title
、item_sell_point
拷贝到 item_keywords
中,便于搜索。(因为需求是从商品标题或商品卖点中查找)
Step5: 重启服务
重启服务,选择 core1
的 Dataimport
标签页,此时右边就已经有内容了。
解释:
(1)/dataimport
第二步 requestHandler
中起的名字。
(2)clean
每次导入前,清空 Document。
(3)Entity
第三步 data-config.xml
中配置的 entity
。
当我们点击 Execute 按钮后,过一会右边会提示索引创建成功,如下所示:
点击 Query
标签页,查询后可以看到数据已经被导入了:
五、查询 Document
之前一直是用 *.*
查询所有,下面详细介绍下查询: