solr索引数据的方法是什么

59次阅读
没有评论

共计 4031 个字符,预计需要花费 11 分钟才能阅读完成。

这篇文章主要介绍“solr 索引数据的方法是什么”,在日常操作中,相信很多人在 solr 索引数据的方法是什么问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”solr 索引数据的方法是什么”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

本教程以 solr4.8 作为测试环境,jdk 版本需要 1.7 及以上版本。

准备

本文假设你对 Java 有初中级以上水平,因此不再介绍 Java 相关环境的配置。下载解压缩 solr,在 example 目录有 start.jar 文件,启动:

1

java -jar start.jar

浏览器访问:http://localhost:8983/solr/,你看到的就是 solr 的管理界面

索引数据

服务启动后,目前你看到的界面没有任何数据,你可以通过 POSTing 命令向 Solr 中添加(更新)文档,删除文档,在 exampledocs 目录包含一些示例文件,运行命令:

1

java -jar post.jar solr.xml monitor.xml

上面的命令是向 solr 添加了两份文档,打开这两个文件看看里面是什么内容,solr.xml 里面的内容是:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

add

doc

  field name= id SOLR1000 /field

  field name= name Solr, the Enterprise Search Server /field

  field name= manu Apache Software Foundation /field

  field name= cat software /field

  field name= cat search /field

  field name= features Advanced Full-Text Search Capabilities using Lucene /field

  field name= features OptimizedforHigh Volume Web Traffic /field

  field name= features Standards Based Open Interfaces – XML and HTTP /field

  field name= features Comprehensive HTML Administration Interfaces /field

  field name= features Scalability – Efficient Replication to other Solr Search Servers /field

  field name= features Flexible and Adaptable with XML configuration and Schema /field

  field name= features Good unicode support: h #xE9;llo (hello with an accent over the e) /field

  field name= price 0 /field

  field name= popularity 10 /field

  field name= inStock true /field

  field name= incubationdate_dt 2006-01-17T00:00:00.000Z /field

/doc

/add

表示向索引中添加一个文档,文档就是用来搜索的数据源,现在就可以通过管理界面搜索关键字”solr”,具体步骤是:

点击页面下的 Execute Query 按钮后右侧就会显示查询结果,这个结果就是刚才导入进去的 solr.xml 的 json 格式的展示结果。solr 支持丰富的查询语法,比如:现在想搜索字段 name 里面的关键字”Search”就可以用语法 name:search,当然如果你搜索 name:xxx 就没有返回结果了,因为文档中没有这样的内容。

数据导入

导入数据到 Solr 的方式也是多种多样的:

可以使用 DIH(DataImportHandler) 从数据库导入数据

支持 CSV 文件导入,因此 Excel 数据也能轻松导入

支持 JSON 格式文档

二进制文档比如:Word、PDF

还能以编程的方式来自定义导入

更新数据

如果同一份文档 solr.xml 重复导入会出现什么情况呢?实际上 solr 会根据文档的字段 id 来唯一标识文档,如果导入的文档的 id 已经存在 solr 中,那么这份文档就被最新导入的同 id 的文档自动替换。你可以自己尝试试验一下,观察替换前后管理界面的几个参数:Num Docs,Max Doc,Deleted Docs 的变化。

numDocs:当前系统中的文档数量,它有可能大于 xml 文件个数,因为一个 xml 文件可能有多个 doc 标签。

maxDoc:maxDoc 有可能比 numDocs 的值要大,比如重复 post 同一份文件后,maxDoc 值就增大了。

deletedDocs:重复 post 的文件会替换掉老的文档,同时 deltedDocs 的值也会加 1,不过这只是逻辑上的删除,并没有真正从索引中移除掉

删除数据

通过 id 删除指定的文档,或者通过一个查询来删除匹配的文档

1

2

java -Ddata=args -jar post.jar delete id SOLR1000 /id /delete

java -Ddata=args -jar post.jar delete query name:DDR /query /delete

此时 solr.xml 文档从索引中删除了,再次搜”solr”时不再返回结果。当然 solr 也有数据库中的事务,执行删除命令的时候事务自动提交了,文档就会立即从索引中删除。你也可以把 commit 设置为 false,手动提交事务。

1

java -Ddata=args  -Dcommit=false-jar post.jar delete id 3007WFP /id /delete

执行完上面的命令时文档并没有真正删除,还是可以继续搜索相关结果,最后可以通过命令:

1

java -jar post.jar –

提交事务,文档就彻底删除了。现在把刚刚删除的文件重新导入 Solr 中来,继续我们的学习。

删除所有数据:

1

http://localhost:8983/solr/collection1/update?stream.body= delete query *:* /query /delete commit=true

删除指定数据

1

http://localhost:8983/solr/collection1/update?stream.body= delete query title:abc /query /delete commit=true

多条件删除

1

http://localhost:8983/solr/collection1/update?stream.body= delete query title:abc AND name:zhang /query /delete commit=true

查询数据

查询数据都是通过 HTTP 的 GET 请求获取的,搜索关键字用参数 q 指定,另外还可以指定很多可选的参数来控制信息的返回,例如:用 fl 指定返回的字段,比如 f1=name,那么返回的数据就只包括 name 字段的内容

1

http://localhost:8983/solr/collection1/select?q=solr fl=name wt=json indent=true

排序

Solr 提供排序的功能,通过参数 sort 来指定,它支持正序、倒序,或者多个字段排序

q=video sort=price desc

q=video sort=price asc

q=video sort=inStock asc, price desc
默认条件下,Solr 根据 socre 倒序排列,socre 是一条搜索记录根据相关度计算出来的一个分数。

高亮

网页搜索中,为了突出搜索结果,可能会对匹配的关键字高亮出来,Solr 提供了很好的支持,只要指定参数:

hl=true #开启高亮功能

hl.fl=name #指定需要高亮的字段

1

http://localhost:8983/solr/collection1/select?q=Search wt=json indent=true hl=true hl.fl=features

 返回的内容中包含:

1

2

3

4

5

highlighting :{

  SOLR1000 :{

  features :[Advanced Full-Text em Search /em Capabilities using Lucene]

 }

}

文本分析

文本字段通过把文本分割成单词以及运用各种转换方法(如:小写转换、复数移除、词干提取)后被索引,schema.xml 文件中定义了字段在索引中,这些字段将作用于其中.
默认情况下搜索”power-shot”是不能匹配”powershot”的,通过修改 schema.xml 文件 (solr/example/solr/collection1/conf 目录),把 features 和 text 字段替换成”text_en_splitting”类型,就能索引到了。

1

2

3

field name= features type= text_en_splitting indexed= true stored= true multiValued= true /

field name= text type= text_en_splitting indexed= true stored= false multiValued= true /

修改完后重启 solr,然后重新导入文档

1

java -jar post.jar *.xml

现在就可以匹配了

power-shot— Powershot

features:recharing— Rechargeable

1 gigabyte – 1G

到此,关于“solr 索引数据的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计4031字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)