我是词组建议者的新手,并且一直在阅读文档。完成建议者可以添加权重,以便对结果进行评分。除非我想念,否则建议者这个短语没有这种选择。我有:
POST test/_search
{
"suggest": {
"text": "noble prize",
"simple_phrase": {
"phrase": {
"field": "title.trigram",
"size": 1,
"gram_size": 3,
"direct_generator": [ {
"field": "title.trigram",
"suggest_mode": "always"
} ],
"highlight": {
"pre_tag": "<em>",
"post_tag": "</em>"
}
}
}
}
}
我想使一些建议更重要或更不重要,和/或排除一些建议。上面的图片带有“诺贝尔奖”,但我想排除该建议或手动将其重要性降低。那可能吗?
该示例直接来自此处找到的第一个示例
编辑由于我的用户传递的所有短语都保存在elasticsearch中,因此上面的代码不会建议使用更好的短语。例如,如果“贵族奖”和“诺贝尔奖”都在索引中,并且用户类型为“贵族奖”,我想建议“诺贝尔奖”,但不会。大多数用户正确输入诺贝尔奖,因此每次使用查询时我都可以增加,因此建议正确。有道理。
另一个编辑:奇怪的是,他们认为您的索引不会增长,并且您不想像完成建议程序允许您那样对短语进行优先排序。
一个完整的例子:
PUT test
{
"settings": {
"index": {
"number_of_shards": 1,
"analysis": {
"analyzer": {
"trigram": {
"type": "custom",
"tokenizer": "standard",
"filter": ["standard", "shingle"]
},
"reverse": {
"type": "custom",
"tokenizer": "standard",
"filter": ["standard", "reverse"]
}
},
"filter": {
"shingle": {
"type": "shingle",
"min_shingle_size": 2,
"max_shingle_size": 3
}
}
}
}
},
"mappings": {
"test": {
"properties": {
"title": {
"type": "text",
"fields": {
"trigram": {
"type": "text",
"analyzer": "trigram"
},
"reverse": {
"type": "text",
"analyzer": "reverse"
}
}
}
}
}
}
}
POST test/test
{"title": "noble prize", "weight": 1}
POST test/test
{"title": "nobel prize", "weight": 2}
查询:
GET /test/_search
{
"suggest": {
"text": "noble prize",
"simple_phrase": {
"phrase": {
"field": "title.trigram",
"size": 1,
"gram_size": 3,
"direct_generator": [
{
"field": "title.trigram",
"suggest_mode": "always"
}
],
"collate": {
"query": {
"inline": {
"match": {
"title": "{{suggestion}}"
}
}
},
"prune": true
},
"highlight": {
"pre_tag": "<em>",
"post_tag": "</em>"
}
}
}
}
}
结果(错误地)获得“贵族奖”:
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 0,
"max_score": 0,
"hits": []
},
"suggest": {
"simple_phrase": [
{
"text": "noble prize",
"offset": 0,
"length": 11,
"options": []
}
]
}
}
您要实现哪些功能?Did You Mean
还是Autocomplete
?在这种情况下,我可以给您其他建议。
要修剪您的建议结果,可以这样使用collate
:
{
"suggest": {
"text": "iphon",
"simple_phrase": {
"phrase": {
"field": "title.trigram",
"size": 1,
"gram_size": 3,
"direct_generator": [
{
"field": "title.trigram",
"suggest_mode": "always"
}
],
"collate": {
"query": {
"inline": {
"match": {
"title": "{{suggestion}}"
}
}
},
"prune": true
},
"highlight": {
"pre_tag": "<em>",
"post_tag": "</em>"
}
}
}
}
}
在结果中,您将看到一个"collate_match": true/false
表示是否有任何建议与您的归类查询匹配的结果。
我使用spring cloud gateway将请求路由到我的下游应用程序,我定义了如下的路由器 路由工作正常,现在我需要添加一个预过滤器,它可以执行一些预条件并获得路由路径。但不知道如何动态更改uri。uri(“http://localhost:8081/test") 下面是我在preFilter中尝试的代码。 因此,我需要根据我的自定义过滤器中的db查找返回,从传入路径/user/test/*
问题内容: 我有一个Elasticsearch索引,其中有一些数据。我实现了该功能,所以当用户写错拼写的东西时,它可能会收到带有正确单词的建议。 之所以使用短语建议者,是因为我需要一些简短的短语(例如名称)的建议,问题是索引中不存在某些建议。 例: 我的问题是,索引中没有与指定建议匹配的词组,因此它向我推荐了不存在的词组,因此会给我一个未找到的搜索词。 我该怎么办?短语建议者是否应该为索引中实际存
我想知道,在spring boot中是否有类(用于web应用程序)的注释?也许是? 我想在我的项目中添加一个自定义筛选器。 spring boot参考指南提到了关于,但我不确定如何使用它。
问题内容: 我想知道,中的类(对于Web应用程序)是否有任何注释?也许@Filter吧? 我想在项目中添加自定义过滤器。 《 Spring Boot参考指南 》提到了关于 ,但是我不确定如何使用它。 问题答案: 如果您要设置第三方过滤器,则可以使用FilterRegistrationBean。例如相当于web.xml 这些将是@Configuration文件中的两个bean 上面已经用spring
通过,我可以轻松地在方法中向添加一个筛选器。 如何使用添加筛选器?我必须使用XML吗? 为了帮助其他人更容易地理解Spring Web配置,我绘制了下面的插图。 比起记住那么多东西,查它还不那么痛苦。 和一篇关于Spring Web初始化的好文章: http://www.kubrynski.com/2014/01/commanding-spring-web-initialization.html
我想在我的项目中添加一个自定义筛选器。 Spring Boot参考指南提到了关于,但我不确定如何使用它。