gpt4 book ai didi

elasticsearch - 在 Elasticsearch 中查找连接词

转载 作者:行者123 更新时间:2023-11-29 02:51:56 25 4
gpt4 key购买 nike

假设我已将这些数据编入索引

song:{
title:"laser game"
}

但用户正在搜索

lasergame

您将如何为此进行映射/索引/查询?

最佳答案

这是一个棘手的问题。

1) 我想最有效的方法可能是使用 compound token filter , word list 由您认为用户可能会连接的一些词组成。

"settings": {
"analysis": {
"analyzer": {
"concatenate_split": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"myFilter"
]
}
},
"filter": {
"myFilter": {
"type": "dictionary_decompounder",
"word_list": [
"laser",
"game",
"lean",
"on",
"die",
"hard"
]
}
}
}
}

应用分析器后,lasergame 将与 lasergame 一起拆分为 lasergame,现在这将提供您的结果包含任何这些词。

2) 另一种方法是将整个标题与 pattern replace char filter 连接起来替换所有空格。

{
"index" : {
"analysis" : {
"char_filter" : {
"my_pattern":{
"type":"pattern_replace",
"pattern":"\\s+",
"replacement":""
}
},
"analyzer" : {
"custom_with_char_filter" : {
"tokenizer" : "standard",
"char_filter" : ["my_pattern"]
}
}
}
}
}

您需要通过这种方法使用多字段,使用这种模式laser game 将被索引为lasergame 并且您的查询将起作用。这里的问题是 laser game play 将被索引为 lasegameplay 并且搜索 lasergame 不会返回任何内容,因此您可能需要考虑使用 前缀查询通配符查询

3) 这可能没有意义,但您也可以使用 synonym filter ,如果您认为用户经常连接一些词。

希望这对您有所帮助!

关于elasticsearch - 在 Elasticsearch 中查找连接词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35064239/

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