如果搜索字符串和目标对象最后有以下任何字符,那么它就不起作用。s y e
在我们的应用程序中,如果用户名为Granny,Smith。它没有搜索奶奶的任何记录,因为它以y结尾。s和e的情况也是如此,即詹姆斯、凯蒂。
问题的根本原因是斯图默。根据弹性搜索文档,算法词干管理器将一系列规则应用于每个单词,以将其简化为词根形式。
例如,英语的算法词干发生器可以从复数单词的末尾删除-s和-es后缀。您可以参考以下网站了解更多细节:https://www.elastic.co/guide/en/elasticsearch/reference/current/stemming.html#algorithmic-stemmershttps://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-stemmer-tokenfilter.html#:~: text=Stemmer令牌filteredit,波特词干算法为英语。
在应用程序映射中。如果已经存在任何词干分析器配置,则可以删除json文件。
"settings": {
"analysis": {
**// Remove whole filter element below. line# 4 to 9
"filter": {
"custom_english_stemmer": {
"type": "stemmer",
"name": "english"
}
},**
"normalizer": {
"useLowercase": {
"type": "custom",
"filter": [
"lowercase"
]
}
},
"tokenizer": {
"custom_tokenizer": {
"type": "ngram",
"min_gram": 1,
"max_gram": 10,
"token_chars": [
"letter",
"digit"
]
}
},
"analyzer": {
"NGram_analyzer": {
"tokenizer": "custom_tokenizer",
"filter": [
"lowercase",
**// Remove stemmer from filter below. line#35
"custom_english_stemmer",**
"asciifolding"
]
},
"custom_analyzer": {
"tokenizer": "standard",
"filter": [
"lowercase",
**// Remove stemmer from filter below. line#44
"custom_english_stemmer",**
"asciifolding"
],
"type": "custom"
}
}
},
"max_ngram_diff": "50"
}
如果您的应用程序没有任何可搜索的描述字段,该字段可以包含复数单词,那么您可以从配置中删除词干分析器,它应该可以正常工作。
我有大量相同类型的实体,每个实体都有大量属性,并且我只有以下两种选择来存储它们: 将每个项存储在索引中并执行多索引搜索 将所有enties存储在单个索引中,并且只搜索1个索引。 一般而言,我想要一个时间复杂度之间的比较搜索“N”实体与“M”特征在上述每一种情况!
我需要对以搜索词开头的搜索结果进行优先级排序。我用了“匹配短语前缀”。我用了“匹配短语前缀”。但它不起作用。 细节: > 质疑 结果
我有以下格式的弹性搜索文档 } } 我的要求是,当我搜索特定字符串(string.string)时,我只想获得该字符串的FileOffSet(string.FileOffSet)。我该怎么做? 谢谢
我使用Elasticsearch允许用户输入要搜索的术语。例如,我要搜索以下属性'name': 如果使用以下代码搜索或,我希望返回此文档。 我尝试过做一个bool must和做多个术语,但它似乎只有在整个字符串都匹配的情况下才起作用。 所以我真正想做的是,这个词是否以任何顺序包含两个词。 有人能帮我走上正轨吗?我已经在这上面砸了一段时间了。
这是回应的一部分 我有联系人号码和名字 现在我的第二个查询->我正在使用术语筛选器查询上面的联系电话
我正在使用聚合来根据其他字段的总和对一个字段进行分组。 它正在工作,但输出与我从数据库查询得到的结果不相似。 ES查询: 输出: "domain_agg":{"doc_count_error_upper_bound": 9,"sum_other_doc_count": 1442,"存储桶": [ { "key":"doc_count","doc_count": 2,"domain_store_co