html中打search标签,Elasticsearch 用于html 去标签化搜索

Elasticsearch 用于html 去标签化搜索:即在Index的时候忽略html tag,同时又存储了完整的html,

在使用的时候可以正常读出来。

自定义html analyzer

PUT my_index

{

"settings": {

// 定义两种过滤html标记后,自动生成的没有html标签的index

"analysis": {

"analyzer": {

//对应text类型

"html_text_analyzer": {

"tokenizer": "standard",

"char_filter": ["html_char_filter"]

},

//对应keyword类型

"html_keyword_analyzer": {

"tokenizer": "keyword",

"filter":["trim"],

"char_filter": ["html_char_filter"]

}

},

"char_filter": {

"html_char_filter": {

"type": "html_strip"

}

}

}

},

"mappings": {

// 测试时使用字段子类型,一个字段建立三种index方便比较

"properties": {

"html":{

"type": "text",

"fields": {

"html_text":{

"search_analyzer": "simple",

"analyzer":"html_text_analyzer",

"type":"text"

},

"html_keyword":{

"analyzer":"html_keyword_analyzer",

"type":"text"

}

}

}

}

}

}

// 测试html_text_analyzer

POST my_index/_analyze

{

"analyzer": "html_text_analyzer",

"text": "

I'm so happy!

"

}

// 返回结果

// 测试html_keyword_analyzer

POST my_index/_analyze

{

"analyzer": "html_keyword_analyzer",

"text": "

I'm so happy!

"

}

// 返回结果 去除html标记后正常分解

{

"tokens" : [

{

"token" : "I'm",

"start_offset" : 3,

"end_offset" : 11,

"type" : "",

"position" : 0

},

{

"token" : "so",

"start_offset" : 12,

"end_offset" : 14,

"type" : "",

"position" : 1

},

{

"token" : "happy",

"start_offset" : 18,

"end_offset" : 27,

"type" : "",

"position" : 2

}

]

}

// 录入数据 带span标记

POST my_index/_doc

{

"html":"I'm so happy!"

}

//返回结果 去除html标记,全文被索引为一个keyword

{

"tokens" : [

{

"token" : "I'm so happy!",

"start_offset" : 0,

"end_offset" : 32,

"type" : "word",

"position" : 0

}

]

}

// 查询index 结果,原始的text类型使用默认analyzer,查询span,能返回结果是应为span也被索引了

POST my_index/_search

{

"query": {

"match": {

"html": "span"

}

}

}

// 查询使用html_text_analyzer 建立的索引中的span,无返回结果结果,说明html标记没有被索引

POST my_index/_search

{

"query": {

"match": {

"html.html_text": "span"

}

}

}

// 查询使用html_text_analyzer 建立的索引中的happy,能返回结果,html中text 被正常索引

POST my_index/_search

{

"query": {

"match": {

"html.html_text": "happy"

}

}

}

// 查询使用html_keyword_analyzer 建立的索引中的happy,无返回结果,因为这里要用keyword的查询语法

POST my_index/_search

{

"query": {

"match": {

"html.html_keyword": "happy"

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值