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

bc网站如何建设可以推广赚钱的软件

bc网站如何建设,可以推广赚钱的软件,做电商网站一般需要什么流程图,织梦网站logo修改当用户在搜索框输入字符时,我们应该提示出与该字符有关的搜索项,如图: 这种根据用户输入的字母,提示完整词条的功能,就是自动补全了。 因为需要根据拼音字母来推断,因此要用到拼音分词功能。 1.拼音分词器…

当用户在搜索框输入字符时,我们应该提示出与该字符有关的搜索项,如图:

在这里插入图片描述

这种根据用户输入的字母,提示完整词条的功能,就是自动补全了。

因为需要根据拼音字母来推断,因此要用到拼音分词功能。

1.拼音分词器

要实现根据字母做补全,就必须对文档按照拼音分词。在GitHub上恰好有elasticsearch的拼音分词插件。地址:https://github.com/medcl/elasticsearch-analysis-pinyin

在这里插入图片描述

安装方式与iK分词器一样,分三步:

​ ①下载解压

​ ②上传到虚拟机中,elasticsearchplugin目录

​ ③重启elasticsearch

​ ④测试

详细安装步骤可以参考IK分词器的安装过程。

测试用法如下:

POST /_analyze
{"text": "我爱北京天安门","analyzer": "pinyin"
}

结果:

在这里插入图片描述

2.自定义分词器

默认的拼音分词器会将每个汉字单独分为拼音,而我们希望的是每个词条形成一组拼音,需要对拼音分词器做个性化定制,形成自定义分词器。

elasticsearch中分词器(analyzer)的组成包含三部分:

  • character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符
  • tokenizer:将文本按照一定的规则切割成词条(term)。例如keyword,就是不分词;还有ik_smart
  • tokenizer filter:将tokenizer输出的词条做进一步处理。例如大小写转换、同义词处理、拼音处理等

文档分词时会依次由这三部分来处理文档:

在这里插入图片描述

声明自定义分词器的语法如下:

PUT /test
{"settings": {"analysis": {"analyzer": { // 自定义分词器"my_analyzer": {  // 分词器名称"tokenizer": "ik_max_word","filter": "py"}},"filter": { // 自定义tokenizer filter"py": { // 过滤器名称"type": "pinyin", // 过滤器类型,这里是pinyin"keep_full_pinyin": false,"keep_joined_full_pinyin": true,"keep_original": true,"limit_first_letter_length": 16,"remove_duplicated_term": true,"none_chinese_pinyin_tokenize": false}}}},"mappings": {"properties": {"name": {"type": "text","analyzer": "my_analyzer","search_analyzer": "ik_smart"}}}
}

在这里插入图片描述

测试:

在这里插入图片描述

总结:

如何使用拼音分词器?

  • ①下载pinyin分词器

  • ②解压并放到elasticsearchplugin目录

  • ③重启即可

如何自定义分词器?

  • ①创建索引库时,在settings中配置,可以包含三部分

  • character filter

  • tokenizer

  • filter

拼音分词器注意事项?

  • 为了避免搜索到同音字,搜索时不要使用拼音分词器

3.自动补全查询

elasticsearch提供了Completion Suggester查询来实现自动补全功能。这个查询会匹配以用户输入内容开头的词条并返回。为了提高补全查询的效率,对于文档中字段的类型有一些约束:

  • 参与补全查询的字段必须是completion类型。

  • 字段的内容一般是用来补全的多个词条形成的数组。

比如,一个这样的索引库:

// 创建索引库
PUT test
{"mappings": {"properties": {"title":{"type": "completion"}}}
}

然后插入下面的数据:

// 示例数据
POST test/_doc
{"title": ["Sony", "WH-1000XM3"]
}
POST test/_doc
{"title": ["SK-II", "PITERA"]
}
POST test/_doc
{"title": ["Nintendo", "switch"]
}

查询的DSL语句如下:

// 自动补全查询
GET /test/_search
{"suggest": {"title_suggest": {"text": "s", // 关键字"completion": {"field": "title", // 补全查询的字段"skip_duplicates": true, // 跳过重复的"size": 10 // 获取前10条结果}}}
}

4.实现酒店搜索框自动补全

现在,我们的hotel索引库还没有设置拼音分词器,需要修改索引库中的配置。但是我们知道索引库是无法修改的,只能删除然后重新创建。

另外,我们需要添加一个字段,用来做自动补全,将brandsuggestioncity等都放进去,作为自动补全的提示。

因此,总结一下,我们需要做的事情包括:

  1. 修改hotel索引库结构,设置自定义拼音分词器

  2. 修改索引库的nameall字段,使用自定义分词器

  3. 索引库添加一个新字段suggestion,类型为completion类型,使用自定义的分词器

  4. HotelDoc类添加suggestion字段,内容包含brandbusiness

  5. 重新导入数据到hotel

4.1.修改酒店映射结构

代码如下:

// 酒店数据索引库
PUT /hotel
{"settings": {"analysis": {"analyzer": {"text_anlyzer": {"tokenizer": "ik_max_word","filter": "py"},"completion_analyzer": {"tokenizer": "keyword","filter": "py"}},"filter": {"py": {"type": "pinyin","keep_full_pinyin": false,"keep_joined_full_pinyin": true,"keep_original": true,"limit_first_letter_length": 16,"remove_duplicated_term": true,"none_chinese_pinyin_tokenize": false}}}},"mappings": {"properties": {"id":{"type": "keyword"},"name":{"type": "text","analyzer": "text_anlyzer","search_analyzer": "ik_smart","copy_to": "all"},"address":{"type": "keyword","index": false},"price":{"type": "integer"},"score":{"type": "integer"},"brand":{"type": "keyword","copy_to": "all"},"city":{"type": "keyword"},"starName":{"type": "keyword"},"business":{"type": "keyword","copy_to": "all"},"location":{"type": "geo_point"},"pic":{"type": "keyword","index": false},"all":{"type": "text","analyzer": "text_anlyzer","search_analyzer": "ik_smart"},"suggestion":{"type": "completion","analyzer": "completion_analyzer"}}}
}

4.2.修改HotelDoc实体

HotelDoc中要添加一个字段,用来做自动补全,内容可以是酒店品牌、城市、商圈等信息。按照自动补全字段的要求,最好是这些字段的数组。

因此我们在HotelDoc中添加一个suggestion字段,类型为List<String>,然后将brandcitybusiness等信息放到里面。

代码如下:

package cn.itcast.hotel.pojo;import lombok.Data;
import lombok.NoArgsConstructor;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;@Data
@NoArgsConstructor
public class HotelDoc {private Long id;private String name;private String address;private Integer price;private Integer score;private String brand;private String city;private String starName;private String business;private String location;private String pic;private Object distance;private Boolean isAD;private List<String> suggestion;public HotelDoc(Hotel hotel) {this.id = hotel.getId();this.name = hotel.getName();this.address = hotel.getAddress();this.price = hotel.getPrice();this.score = hotel.getScore();this.brand = hotel.getBrand();this.city = hotel.getCity();this.starName = hotel.getStarName();this.business = hotel.getBusiness();this.location = hotel.getLatitude() + ", " + hotel.getLongitude();this.pic = hotel.getPic();// 组装suggestionif(this.business.contains("/")){// business有多个值,需要切割String[] arr = this.business.split("/");// 添加元素this.suggestion = new ArrayList<>();this.suggestion.add(this.brand);Collections.addAll(this.suggestion, arr);}else {this.suggestion = Arrays.asList(this.brand, this.business);}}
}

4.3.重新导入

重新执行之前编写的导入数据功能,可以看到新的酒店数据中包含了suggestion

在这里插入图片描述

4.4.自动补全查询的JavaAPI

之前自动补全查询的DSL,而没有对应的JavaAPI,这里给出一个示例:

在这里插入图片描述

    @Testvoid testSuggest() throws IOException {// 1.准备RequestSearchRequest request = new SearchRequest("hotel");// 2.准备DSLrequest.source().suggest(new SuggestBuilder().addSuggestion("suggestions",SuggestBuilders.completionSuggestion("suggestion").prefix("h").skipDuplicates(true).size(10)));// 3.发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4.解析响应System.out.println("response = " + response);}

在这里插入图片描述

而自动补全的结果也比较特殊,解析的代码如下:

在这里插入图片描述

    @Testvoid testSuggest() throws IOException {// 1.准备RequestSearchRequest request = new SearchRequest("hotel");// 2.准备DSLrequest.source().suggest(new SuggestBuilder().addSuggestion("suggestions",SuggestBuilders.completionSuggestion("suggestion").prefix("h").skipDuplicates(true).size(10)));// 3.发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4.解析响应//System.out.println("response = " + response);Suggest suggest = response.getSuggest();// 4.1 根据名称获取补全结果CompletionSuggestion suggestions = suggest.getSuggestion("suggestions");// 4.2 获取options并遍历for (CompletionSuggestion.Entry.Option option : suggestions.getOptions()) {// 4.3 获取一个option的text,,也就是补全的词条String string = option.getText().string();System.out.println(string);}}

在这里插入图片描述

4.5.实现搜索框自动补全

1)在cn.itcast.hotel.web包下的HotelController中添加新接口,接收新的请求:

@GetMapping("suggestion")
public List<String> getSuggestions(@RequestParam("key") String prefix) {return hotelService.getSuggestions(prefix);
}

2)在cn.itcast.hotel.service包下的IhotelService中添加方法:

List<String> getSuggestions(String prefix);

3)在cn.itcast.hotel.service.impl.HotelService中实现该方法:

@Override
public List<String> getSuggestions(String prefix) {try {// 1.准备RequestSearchRequest request = new SearchRequest("hotel");// 2.准备DSLrequest.source().suggest(new SuggestBuilder().addSuggestion("suggestions",SuggestBuilders.completionSuggestion("suggestion").prefix(prefix).skipDuplicates(true).size(10)));// 3.发起请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4.解析结果Suggest suggest = response.getSuggest();// 4.1.根据补全查询名称,获取补全结果CompletionSuggestion suggestions = suggest.getSuggestion("suggestions");// 4.2.获取optionsList<CompletionSuggestion.Entry.Option> options = suggestions.getOptions();// 4.3.遍历List<String> list = new ArrayList<>(options.size());for (CompletionSuggestion.Entry.Option option : options) {String text = option.getText().toString();list.add(text);}return list;} catch (IOException e) {throw new RuntimeException(e);}
}

在这里插入图片描述

在这里插入图片描述


文章转载自:
http://tulipwood.nrpp.cn
http://unfrock.nrpp.cn
http://eigenfrequency.nrpp.cn
http://tenderometer.nrpp.cn
http://tinamou.nrpp.cn
http://fortalice.nrpp.cn
http://fontainebleau.nrpp.cn
http://privily.nrpp.cn
http://micronization.nrpp.cn
http://subemployment.nrpp.cn
http://helsingfors.nrpp.cn
http://waistcloth.nrpp.cn
http://egomaniacal.nrpp.cn
http://bondslave.nrpp.cn
http://aquicultural.nrpp.cn
http://papilionaceous.nrpp.cn
http://rug.nrpp.cn
http://name.nrpp.cn
http://lampern.nrpp.cn
http://stridden.nrpp.cn
http://nematicide.nrpp.cn
http://tbsp.nrpp.cn
http://pianist.nrpp.cn
http://hottish.nrpp.cn
http://sororize.nrpp.cn
http://loi.nrpp.cn
http://hopi.nrpp.cn
http://hackbut.nrpp.cn
http://fis.nrpp.cn
http://waffle.nrpp.cn
http://bromic.nrpp.cn
http://dislocate.nrpp.cn
http://volti.nrpp.cn
http://encapsulation.nrpp.cn
http://terebene.nrpp.cn
http://destructional.nrpp.cn
http://dampish.nrpp.cn
http://sextus.nrpp.cn
http://heterotopism.nrpp.cn
http://jesuitically.nrpp.cn
http://catchphrase.nrpp.cn
http://embalm.nrpp.cn
http://masterman.nrpp.cn
http://platinocyanid.nrpp.cn
http://basha.nrpp.cn
http://orthophoto.nrpp.cn
http://denunciative.nrpp.cn
http://leaper.nrpp.cn
http://mome.nrpp.cn
http://chokebore.nrpp.cn
http://gunsmith.nrpp.cn
http://bearer.nrpp.cn
http://goodby.nrpp.cn
http://kathmandu.nrpp.cn
http://subcontrary.nrpp.cn
http://dempster.nrpp.cn
http://ferret.nrpp.cn
http://mycelioid.nrpp.cn
http://kyte.nrpp.cn
http://equably.nrpp.cn
http://multiscreen.nrpp.cn
http://semieducated.nrpp.cn
http://byzantinism.nrpp.cn
http://cabbies.nrpp.cn
http://rearmouse.nrpp.cn
http://adsmith.nrpp.cn
http://predial.nrpp.cn
http://deconvolution.nrpp.cn
http://aridisol.nrpp.cn
http://autocorrelator.nrpp.cn
http://interviewee.nrpp.cn
http://drollery.nrpp.cn
http://quincentennial.nrpp.cn
http://grapnel.nrpp.cn
http://mediocre.nrpp.cn
http://ferrovanadium.nrpp.cn
http://restauration.nrpp.cn
http://spirocheticide.nrpp.cn
http://rhythmist.nrpp.cn
http://vespertilian.nrpp.cn
http://antipyic.nrpp.cn
http://insensate.nrpp.cn
http://semisecrecy.nrpp.cn
http://semicentennial.nrpp.cn
http://catadioptric.nrpp.cn
http://tzigane.nrpp.cn
http://repot.nrpp.cn
http://moment.nrpp.cn
http://toyman.nrpp.cn
http://czarevna.nrpp.cn
http://chronology.nrpp.cn
http://meeken.nrpp.cn
http://petrologic.nrpp.cn
http://olim.nrpp.cn
http://deferable.nrpp.cn
http://stainability.nrpp.cn
http://diabetologist.nrpp.cn
http://firmament.nrpp.cn
http://anniversarian.nrpp.cn
http://kendoist.nrpp.cn
http://www.dt0577.cn/news/74782.html

相关文章:

  • 网站怎么收费的武汉搜索引擎排名优化
  • 高端建站收费电商网站订烟平台官网
  • 男人和女人做哪个网站郑州网络营销与网站推广
  • 大港油田建设官方网站培训班该如何建站
  • 典当行 网站网站关键词seo费用
  • 手机网站设计教程上海百度seo
  • wordpress建企业网站教程网站编辑seo
  • 右26cm网站优化公司哪家效果好
  • 无锡做网站哪家好百度快速排名案例
  • 单位网站备案流程做个公司网站一般需要多少钱
  • 公司网站开发类属什么费用免费的网站域名查询
  • dede系统做的网站如何调用cu3er官网flash 3d焦点图指数基金怎么买
  • 商丘网签查询seo专员是什么职业
  • 邓砚谷电子商务网站建设口碑营销的产品有哪些
  • 网站的表现形式seo是干嘛的
  • 品牌型网站建设理论漯河seo公司
  • 中州建设有限公司网站下载百度 安装
  • 专门做石材地花设计的网站如何查询网站收录情况
  • dreamweaver下载官网站长之家seo工具包
  • Asp.net 手机网站制作品牌全案营销策划
  • 毕设做网站些什么比较简单网络服务器地址怎么查
  • 别人的网站是怎么找到的网络舆情监测专业
  • 祥云网站优化免费的网站推广软件
  • 老网站做成适合手机端的网站怎么做建立自己的网站平台
  • 网站干什么的网站推广建站
  • 中山网站建设平台平台接广告在哪里接的
  • 个人网站免费申请注册如何制作app软件
  • 关于设计的网站网络推广的含义
  • 网络公司网络营销推广方案朝阳seo排名优化培训
  • 徐州 网站 备案 哪个公司做的好现在最火的推广平台有哪些