gpt4 book ai didi

elasticsearch - Elasticsearch 中不需要的停用词

转载 作者:行者123 更新时间:2023-12-03 00:00:56 25 4
gpt4 key购买 nike

我正在使用Elastic Search 6.这是查询

PUT /semtesttest
{
"settings": {
"index" : {
"analysis" : {
"filter": {
"my_stop": {
"type": "stop",
"stopwords_path": "analysis1/stopwords.csv"
},
"synonym" : {
"type" : "synonym",
"synonyms_path" : "analysis1/synonym.txt"
}
},
"analyzer" : {
"my_analyzer" : {
"tokenizer" : "standard",
"filter" : ["synonym","my_stop"]
}
}
}
}
},
"mappings": {
"all_questions": {
"dynamic": "strict",
"properties": {
"kbaid":{
"type": "integer"
},
"answer":{
"type": "text"
},
"question": {
"type": "text",
"analyzer": "my_analyzer"
}
}
}
}
}

PUT /semtesttest/all_questions/1
{
"question":"this is hippie"
}

GET /semtesttest/all_questions/_search
{
"query":{
"fuzzy":{"question":{"value":"hippie","fuzziness":2}}
}
}

GET /semtesttest/all_questions/_search
{
"query":{
"fuzzy":{"question":{"value":"this is","fuzziness":2}}
}
}

synonym.txt中是
this, that, money => sainai

stopwords.csv中是
hello
how
are
you

第一个得到(“嬉皮”)返回空
只有第二个get('this is')返回结果

问题是什么?似乎在第一个查询中过滤了停用词“this is”,但是我是否明确指定了停用词?

最佳答案

fuzzy是术语查询。它不会分析输入,因此您的查询正在寻找确切的词this is(应用一些模糊的乐趣)。

因此,您要么希望根据这两个术语构建查询,要么使用full text query代替。如果模糊性很重要,我认为唯一的全文查询是match:

GET /semtesttest/all_questions/_search?pretty 
{
"query":{
"match":{"question":{"query":"this is","fuzziness":2}}
}
}

如果匹配短语很重要,则可能需要查看此 answer并使用 span查询。

这也可能对您有所帮助,因此您可以查看分析仪的使用方式:
GET /semtesttest/_analyze?analyzer=my_analyzer&field=question&text=this is

关于elasticsearch - Elasticsearch 中不需要的停用词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49142179/

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