solr分词查询怎么使用

77次阅读
没有评论

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

本篇内容主要讲解“solr 分词查询怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让丸趣 TV 小编来带大家学习“solr 分词查询怎么使用”吧!

1  实验 1.1  准备

分词字段:/CaseInfo/ 案 /@DocContent
分词器:IKAnalyzer2012
测试关键字:抢劫黄金
返回字段:/CaseInfo/ 案 /@DocContent

分别插入 3 条数据,向 DocContent 插入不同的值

1.2  测试

1、  查询条件:*:*
查询结果如下:

2、查询条件:\/CaseInfo/ 案 /@DocContent: 抢劫黄金
查询结果如下:

3、查询条件:\/CaseInfo/ 案 /@DocContent: 抢劫黄金
注意:抢劫黄金加了引号。
查询结果如下:

4、查询条件:\/CaseInfo/ 案 /@DocContent: 抢劫 AND \/CaseInfo/ 案 /@DocContent: 黄金
查询结果如下:

5、查询条件:\/CaseInfo/ 案 /@DocContent: 抢劫 OR \/CaseInfo/ 案 /@DocContent: 黄金
查询结果如下:

6、查询条件:\/CaseInfo/ 案 /@DocContent: 抢劫 黄金
注意:抢劫与黄金中间添加空格
查询结果为空:

1.3  结果分析

由于查询结果与 solr 解析的查询语句有关,勾选界面左下角的 debugQuery,可以得到对应 parsedquery_toString 值,如下表:

根据上表可以得到下面的分析结果

1.3.1  *:*

  查询语句表示查询全部数据。

1.3.2  \/CaseInfo/ 案 /@DocContent: 抢劫黄金

表示查询的 DocContent 字段经过分词后,必须包含“抢劫”且包含“黄金”。parsedquery_toString 值中“+”表示存在操作符,要求符号“+”后面的项必须在字段中存在。经过第一张表分词结果,两条数据满足要求。

a)  抢劫黄金

b)  黄金不要抢劫

1.3.3  \/CaseInfo/ 案 /@DocContent: 抢劫黄金

加了双引号表示完全匹配,表示查询的 DocContent 字段经过分词后,必须包含“抢劫黄金”,经过第一张表分词结果,一条数据满足要求。

a)  抢劫黄金

1.3.4  \/CaseInfo/ 案 /@DocContent: 抢劫 AND  \/CaseInfo/ 案 /@DocContent: 黄金

AND 表示既满足左条件又满足右条件。DocContent 字段经过分词后,既要包含“抢劫”且包含“黄金”。两条数据满足要求。

a)  抢劫黄金

b)  黄金不要抢劫

1.3.5  \/CaseInfo/ 案 /@DocContent: 抢劫 OR \/CaseInfo/ 案 /@DocContent: 黄金

OR 表示或者,满足一个条件就可以。DocContent 字段经过分词后,包含“抢劫”或包含“黄金”。三条数据满足要求。三条结果:

a)  抢劫黄金

b)  黄金不要抢劫

c)  太阳黄太阳金抢劫

1.3.6  \/CaseInfo/ 案 /@DocContent: 抢劫 黄金

这里查询结果为空。分析 parsedquery_toString 值:

+/CaseInfo/ 案 /@DocContent: 抢劫 +(+text: 黄 +text: 金)

表示 DocContent 字段分词后必须包含“抢劫”,并且 text 字段必须包含“黄”与“金”才能满足条件。由于我们没有想 text 字段赋值,所以下旬结果为空。为什么会有 text 字段的呢?

schema.xml 中

!– defaultSearchField text /defaultSearchField —

在 solrconfig.xml 中

  requestHandler name= /select >

  !– default values for query parameters can be specified, these

  will be overridden by parameters in the request

  —

  lst name= defaults

  str name= echoParams explicit /str

  int name= rows 10 /int

  str name= df text /str

  /lst

/requestHandler

schema.xml 中 defaultSearchField 与 solrconfig.xml 中 df 属性都是默认搜索字段的意思(注意:defaultSearchField 默认是被注释的),优先级是 solrconfig.xml 的 df 高于 schema.xml 中的 defaultSearchField。

设置默认字段的效果,搜索条件为 \/CaseInfo/ 案 /@DocContent: 抢劫 黄金,中间的空格相当于 AND,因此搜索条件等价于 \/CaseInfo/ 案 /@DocContent: 抢劫 AND text: 黄金,所以不会搜索岛结果。

解决方法:

方法 1:可以把条件变为 \/CaseInfo/ 案 /@DocContent:(抢劫 黄金)。

方法 2:搜索条件不变,查询时 URL 加上 df 字段值为 /CaseInfo/ 案 /@DocContent 即可。

到此,相信大家对“solr 分词查询怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

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