gpt4 book ai didi

elasticsearch - 使用Elasticsearch在HTML中搜索英文文本

转载 作者:行者123 更新时间:2023-12-02 22:57:03 27 4
gpt4 key购买 nike

我正在尝试使用Elasticsearch为英语中的HTML文档编制索引。数据采用原始HTML格式。我已经找到一个过滤HTML标签的设置,但是我不能将此过滤器与英语分析仪一起使用。

我希望此设置返回三个 token ,但它会返回五个 token ,因为它两次将“html”视为一个 token 。

POST _analyze
{
"analyzer": "english",
"char_filter": ["html_strip"],
"text": "<html>It will be raining in yosemite this weekend</html>"
}

我如何才能仅获得上面文本的三个标记(没有HTML标记),所以我的返回将类似于以下内容?
{
"tokens": [
{
"token": "rain",
"start_offset": 11,
"end_offset": 18,
"type": "<ALPHANUM>",
"position": 3
},
{
"token": "yosemit",
"start_offset": 22,
"end_offset": 30,
"type": "<ALPHANUM>",
"position": 5
},
{
"token": "weekend",
"start_offset": 36,
"end_offset": 43,
"type": "<ALPHANUM>",
"position": 7
}
]
}

最佳答案

定义一个仅将英语分析器用作基本模板的自定义分析器,然后向其中添加html条过滤器。

PUT /english_with_html_strip
{
"settings": {
"analysis": {
"filter": {
"english_stop": {
"type": "stop",
"stopwords": "_english_"
},
"english_keywords": {
"type": "keyword_marker",
"keywords": ["example"]
},
"english_stemmer": {
"type": "stemmer",
"language": "english"
},
"english_possessive_stemmer": {
"type": "stemmer",
"language": "possessive_english"
}
},
"analyzer": {
"english_with_html_strip": {
"tokenizer": "standard",
"char_filter": ["html_strip"],
"filter": [
"english_possessive_stemmer",
"lowercase",
"english_stop",
"english_keywords",
"english_stemmer"
]
}
}
}
}
}

那你可以做
POST /english_with_html_strip/_analyze
{
"analyzer": "english_with_html_strip",
"text": "<html>It will be raining in yosemite this weekend</html>"
}

这是假设您要使用英语分析器来分析文本。如果您只想对标记的HTML进行标记化处理,则可以
POST _analyze
{
"tokenizer": "standard",
"char_filter": [ "html_strip" ],
"text": "<html>It will be raining in yosemite this weekend</html>"
}

关于elasticsearch - 使用Elasticsearch在HTML中搜索英文文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49660989/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com