当前位置: 首页 > wzjs >正文

衡阳网站排名优化费用深圳中心网站建设

衡阳网站排名优化费用,深圳中心网站建设,南宁专业网站制作公司,男女之间做下面哪个网站免费Elasticsearch 提供了强大的自动补全 (Autocomplete) 功能,以下为一个基础的自动补全DSL语句 {"suggest": {"my_suggestion": { // 自定义建议器名称,可按需修改"text": "ap", // 用户输入的前缀(如搜索框…

Elasticsearch 提供了强大的自动补全 (Autocomplete) 功能,以下为一个基础的自动补全DSL语句

{"suggest": {"my_suggestion": {  // 自定义建议器名称,可按需修改"text": "ap",     // 用户输入的前缀(如搜索框输入的字符)"completion": {"field": "title_completion",  // 必须是 mapping 中定义的 completion 类型字段"size": 5,                    // 返回最多 5 条补全结果"skip_duplicates": true       // 跳过重复结果}}}
}
字段名作用注意事项
suggest固定顶层字段,所有建议查询(包括自动补全)都必须嵌套在该字段下必选
my_suggestion自定义建议器名称,用于区分不同的补全逻辑(可随意命名)必选,需保证语义清晰
text用户输入的前缀(如搜索框实时输入的字符,ES 会用它匹配补全结果)必选,需与业务场景的输入对应
completion固定类型,指定使用 Elasticsearch 「Completion Suggester」实现补全必选
field索引中定义的 completion 类型字段(需提前在 mapping 中配置)必选,字段类型必须正确
size控制返回的补全结果数量(如设置为 10 则最多返回 10 条)可选,默认 5
skip_duplicates是否跳过重复结果(true 则去重,false 保留重复)可选,默认 false

带上下文过滤器的DSL语句,如果你的补全需要区分类别 / 场景(如「手机」和「电脑」分类下的不同补全),可以用 contexts 过滤:

{"suggest": {"my_suggestion": {"text": "ip","completion": {"field": "title_completion","size": 5,"contexts": {  // 上下文过滤规则"category": [  // 假设 mapping 中定义了 category 上下文{"context": "electronics",  // 只返回「电子产品」分类的补全"boost": 2  // 结果权重 +2(可选,用于调整优先级)}]}}}}
}
字段名作用依赖条件
contexts按「上下文」过滤补全结果(如分类、地区等)mapping 需提前定义 context
category自定义的上下文名称(需与 mapping 中配置一致)必选(与 mapping 对应)
context具体的上下文值(如 "electronics" 表示「电子产品」分类)必选
boost给该上下文结果增加权重(影响排序,数值越大越靠前)可选,默认 1

如果用户输入可能有拼写错误,可以开启 fuzzy

{"suggest": {"my_suggestion": {"text": "aple",  // 故意模拟拼写错误"completion": {"field": "title_completion","fuzzy": {      // 开启模糊匹配"fuzziness": 1  // 允许 1 次编辑距离(如增/删/改 1 个字符)}}}}
}
字段名作用场景
fuzzy开启模糊匹配,允许用户输入有拼写错误时仍能匹配结果搜索框输入容错
fuzziness允许的最大编辑距离(0 严格匹配,1 允许 1 处错误,AUTO 自动适配)必选(开启模糊时)

以下为在java代码当中运用的实例

import org.apache.http.HttpHost;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.search.suggest.Suggest;
import org.elasticsearch.search.suggest.SuggestBuilder;
import org.elasticsearch.search.suggest.SuggestBuilders;
import org.elasticsearch.search.suggest.completion.CompletionSuggestion;
import org.elasticsearch.search.builder.SearchSourceBuilder;
​
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
​
public class SimpleESAutocomplete {public static void main(String[] args) {// 构建 ES 客户端,连接本地 9200 端口try (RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")))) {
​// 执行最简自动补全查询,参数:客户端、索引名、补全字段、用户输入前缀List<String> results = basicCompletionSuggest(client, "users", "name_suggest", "mic");System.out.println("自动补全结果: " + results);
​} catch (IOException e) {e.printStackTrace();}}
​/*** 最简自动补全方法:仅用 Completion Suggester 实现基础补全* 流程拆分:1.准备Request  2.准备DSL  3.发起请求  4.解析结果* @param client   ES 客户端* @param index    索引名称* @param field    补全字段(需是 mapping 中配置的 completion 类型)* @param prefix   用户输入的前缀关键字* @return 补全建议结果列表* @throws IOException 网络或 ES 操作异常*/private static List<String> basicCompletionSuggest(RestHighLevelClient client, String index, String field, String prefix) throws IOException {// 1. 准备 Request(初始化搜索请求 & 绑定索引)SearchRequest searchRequest = new SearchRequest(index); 
​// 2. 准备 DSL(构建补全相关的查询逻辑,设置到 SearchSourceBuilder 中)// 2.1 构建补全建议器CompletionSuggestionBuilder suggestionBuilder = SuggestBuilders.completionSuggestion(field).prefix(prefix)  // 设置用户输入的前缀.size(5);        // 最多返回 5 条补全结果(可按需调整)// 2.2 组装建议查询SuggestBuilder suggestBuilder = new SuggestBuilder();suggestBuilder.addSuggestion("simple_suggest", suggestionBuilder); // 2.3 把建议查询放入搜索源SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();sourceBuilder.suggest(suggestBuilder); // 2.4 将构建好的 DSL 关联到 RequestsearchRequest.source(sourceBuilder); 
​// 3. 发起请求(调用客户端的 search 方法执行查询)SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT); 
​// 4. 解析结果(从响应中提取补全建议并封装成 List 返回)List<String> results = new ArrayList<>();Suggest suggest = response.getSuggest();if (suggest != null) {//根据补全查询名称,获取补全结果CompletionSuggestion completionSuggestion = suggest.getSuggestion("simple_suggest");//获取option里面就是我们要传回的数据completionSuggestion.getOptions().forEach(option -> results.add(option.getText().string()));}return results;}
}

自动补全对字段也是有要求的,比方说类型应该是completion,字段值是多词条的数组以便于分词。、

关键步骤:

  1. 准备 Request:创建SearchRequest并指定索引。

  2. 准备 DSL:

    • 使用CompletionSuggestionBuilder构建补全查询,设置前缀和返回数量。

    • 将补全查询添加到SearchSourceBuilder中。

  3. 发起请求:执行查询并获取响应。

  4. 解析结果:从响应中提取补全建议文本,存入List返回。

注意事项:

  1. 数据准备

    • 必须先在 ES 中创建索引并定义completion类型字段。

    • 向索引中写入文档时,需填充补全字段。

  2. 映射限制

    • completion类型字段不支持分词,仅支持精确前缀匹配。

    • 如需分词后的前缀匹配,可使用search_as_you_type类型。

  3. 部署要求

    • 本地需运行 Elasticsearch 服务(默认 9200 端口)。

    • 依赖 ES Java 客户端(Maven/Gradle 引入)。

http://www.dtcms.com/wzjs/798818.html

相关文章:

  • 做网站备案实名需要钱吗开发公司招标流程及管理制度
  • 公司建设网站需要多少钱wordpress 3.3.1 漏洞
  • 做网站的过程什么网站做推广
  • 应用asp做网站网站设计个人心得
  • 个人建立网站后怎么盈利网址链接怎么做出来的
  • 专业做生鲜的网站好星座 网站 建设
  • 濮阳做网站做的好的公司网页制作是建网站的第几步
  • 杭州制作网页与网站深圳外贸网站定制
  • 想建个图片网站亚马逊aws永久免费服务器
  • 怎么让搜索引擎收录网站中国新闻社是国企还是央企
  • 设置网站关键词怎么做移动互联网开发工程师证书
  • 自己做的网站提示不安全金蝶进销存软件免费版
  • 青岛 生物类网站建设wordpress选了中文还是英文
  • 驻马店哪家做网站好收录网站的二级域名
  • 重庆今天刚刚发生的新闻wordpress 国内 优化
  • 给孩子做衣服的网站网站建设的经费
  • 即墨做砍价小程序最好的网站泰安房价网二手房出售信息
  • 哈尔滨企业建站模板珠海制作网站
  • asp网站伪静态教程庆阳北京网站建设
  • 企业网站推广优化小程序制作问卷调查
  • winscp怎么做网站个人做房产网站
  • 猪八戒网做网站国内餐饮类网站欣赏
  • 个性化建网站定制微网站特点
  • 做润滑油网站图片合肥小程序开发
  • 聊城市 网站制作讲究 网站
  • 新网站怎么做谷歌推广呢国内设计网站公司
  • 林州网站建设制作东莞东智通人才招聘网
  • 网站建设网页设计小江色无极网站正在建设中
  • 如何做网站站内搜索如何高效率的建设网站
  • 营销网站建设收费标准线上销售的方法和技巧