gpt4 book ai didi

elasticsearch - 在Elasticsearch中索引字符串的最后一个单词

转载 作者:行者123 更新时间:2023-12-03 01:10:11 28 4
gpt4 key购买 nike

我正在寻找一种方法来将字段的最后一个单词(或更笼统地说:最后一个标记)索引到一个单独的子字段中。我已经研究了Predicate Script token 过滤器,但是在这种情况下,无痛脚本API仅提供了从原始输入字符串开始的脚尖的绝对位置,因此我可以找到第一个这样的 token :

GET /_analyze
{
"tokenizer": "whitespace",
"filter": [
{
"type": "predicate_token_filter",
"script": {
"source": """
token.position == 0
"""
}
}
],
"text": "the fox jumps the lazy dog"
}
这有效并导致:
{
"tokens" : [
{
"token" : "the",
"start_offset" : 0,
"end_offset" : 3,
"type" : "<ALPHANUM>",
"position" : 0
}
]
}
但是我需要最后一个 token ,而不是第一个。如果没有在Elasticsearch之外准备单独的字段预索引,有什么方法可以实现?

最佳答案

您在正确的道路上!解决方案与您所拥有的不远...当您知道可以轻松获取第一个 token 时,但您需要的是最后一个...只需反转字符串即可...
以下分析器将仅输出您需要的 token ,即dog
我们首先从反转整个字符串开始,然后按标记拆分,使用谓词脚本仅选择第一个,然后再次反转该标记。瞧!

POST test/_analyze
{
"text": "the fox jumps the lazy dog",
"tokenizer": "keyword",
"filter": [
"reverse",
"word_delimiter",
{
"type": "predicate_token_filter",
"script": {
"source": """
token.position == 0
"""
}
},
"reverse"
]
}
结果:
{
"tokens" : [
{
"token" : "dog",
"start_offset" : 0,
"end_offset" : 3,
"type" : "word",
"position" : 0
}
]
}

关于elasticsearch - 在Elasticsearch中索引字符串的最后一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64501819/

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