gpt4 book ai didi

elasticsearch - 如何在Elasticsearch中找到所有包含 “blah”的对象?

转载 作者:行者123 更新时间:2023-12-03 01:29:46 24 4
gpt4 key购买 nike

我一直像这样使用通配符:*blah*但是,文档指出您不应该使用*开头一个通配符值,因为它会增加所需的迭代次数并降低搜索性能。

另外,文档中没有指示通配符是否区分大小写。我注意到,当我搜索小写字母“a”时,我得到了所有同时具有“a”或“A”的东西,但是当我搜索大写字母“A”时,字面意思是*A*,我根本没有得到任何结果。

我希望此特定搜索的行为与例如,如果我使用filter(title__icontains=‘blah’)(包括不区分大小写),Django的ORM的行为完全一样。因此,如果我说get me all records that contain the word ‘the’ in the title,我希望返回标题中带有“the”(不区分大小写)的任何内容。

最佳答案

我不知道您将如何避免使用通配符查询的警告方法,因此,如果您在语法上遇到麻烦,这就是下面的样子:

GET /_search
{
"query": {
"wildcard": {
"title": {
"value": "*elved*",
"boost": 1.0,
"rewrite": "constant_score"
}
}
}
}

我只是在自己的搜索索引上测试了这种类型的查询,然后搜索 *oam*与产品标题中的“发泡”正确匹配。

至于 不区分大小写的,只要您使用内置分析器之一(例如 StandardEnglish),都应立即进行处理。但是,如果您使用的是自定义分析器,则只需确保包括 lowercase过滤器,以及您想通过这些过滤器运行的其他任何过滤器。
PUT index_name
{
"settings": {
"analysis": {
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase"
]
}
}
}
}
}

如果您未在字段映射中指定分析器,那么我相信它默认情况下使用 standard,其中包括小写过滤。

关于elasticsearch - 如何在Elasticsearch中找到所有包含 “blah”的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56532487/

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