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

自己做的网站怎么绑定域名做室内装修的网站

自己做的网站怎么绑定域名,做室内装修的网站,个人简历表格模板,wordpress主题播放音乐不刷新一、概述 用Rust创建搜索引擎是探索该语言在性能和安全性方面具有优势的绝佳方式。 这个项目将索引和搜索概念转移到Rust的生态系统中,由于Rust独特的语法和范式,这是一个挑战,但也是有益的。 二、构建搜索引擎 步骤1,创建项目…

一、概述

用Rust创建搜索引擎是探索该语言在性能和安全性方面具有优势的绝佳方式。
这个项目将索引和搜索概念转移到Rust的生态系统中,由于Rust独特的语法和范式,这是一个挑战,但也是有益的。

二、构建搜索引擎

步骤1,创建项目

使用如下命令创建一个Rust新项目:

cargo new shrimp_engine
cd shrimp_engine
code .

步骤2,加入依赖项

需要一些crate来帮助解析和数据处理。例如:
tantivy:用于索引和搜索文本(类似于Java世界中的Lucene)

serde和serde_json:用于JSON解析
将这两个库加入到Cargo.toml文件中:

[dependencies]
tantivy = "0.17"
serde = "1.0"
serde_json = "1.0"

步骤3,定义数据结构

定义我们要索引的文档的结构。定义一个简单的结构体,它表示带有标题和正文的文档。

use serde::{Serialize, Deserialize};#[derive(Serialize, Deserialize, Debug)]
struct Document {title: String,body: String,
}

步骤4,创建索引

使用tantivy,根据数据结构创建索引模式,然后将文档添加到索引中。

use tantivy::{doc, schema::*, Index};fn create_index() -> Index {// 定义Schemalet mut schema_builder = Schema::builder();schema_builder.add_text_field("title", TEXT | STORED);schema_builder.add_text_field("body", TEXT);let schema = schema_builder.build(); // 在目录中创建索引let index = Index::create_in_ram(schema.clone()); // 获取索引写入器let mut index_writer = index.writer(50_000_000).unwrap(); // 添加文档let title = schema.get_field("title").unwrap();let body = schema.get_field("body").unwrap();let doc = doc!(title => "Example Title", body => "This is the body of the document.");let _ = index_writer.add_document(doc); // 将文档提交到索引let _ = index_writer.commit();index
}

Schema定义索引的结构,指定应该索引哪些字段(这里是标题和正文)以及如何(例如,存储、文本分析)创建一个内存索引,并将文档添加到该索引中。添加的每个文档都由Document结构体定义,然后对其进行序列化以进行索引。将更改提交到索引中,使其可搜索。

步骤5,搜索

实现一个搜索索引的函数。我们需要创建一个搜索器和查询解析器。

use tantivy::query::QueryParser;
use tantivy::collector::TopDocs;fn search_index(index: &Index, query_str: &str) -> tantivy::Result<()> {let reader = index.reader()?;let searcher = reader.searcher();let schema = index.schema();let title = schema.get_field("title").unwrap();let body = schema.get_field("body").unwrap();let query_parser = QueryParser::for_index(index, vec![title, body]);let query = query_parser.parse_query(query_str)?;let top_docs = searcher.search(&query, &TopDocs::with_limit(10))?;for (_, doc_address) in top_docs {let retrieved_doc = searcher.doc(doc_address)?;println!("{:?}", retrieved_doc);}Ok(())
}

步骤6,测试搜索引擎,修改main函数

fn main() -> Result<(), TantivyError> {println!("Hello, Shrimp!");// 创建索引并存储它let index = create_index();// 在创建的索引中搜索search_index(&index, "Example")?;Ok(())
}

运行结果如下:

Hello, Shrimp!
Document { field_values: [FieldValue { field: Field(0), value: Str("Example Title") }] }
tantivy crate中的组件用于构建搜索引擎的核心功能,从创建索引到查询索引。

tantivy crate中的组件用于构建搜索引擎的核心功能,从创建索引到查询索引。

搜索引擎的核心机制

1,索引读取器和搜索器:

为了搜索索引,将实例化一个索引读取器,创建一个能够对索引执行查询的搜索器。

2,查询解析和执行

查询解析器解释查询的字符串,并根据已定义的Schema将其转换为查询对象。然后,搜索者使用该查询来查找相关文档并对其进行排序。

3,检索和显示结果

检索并显示最匹配的文档(在一定范围内)。基于搜索查询、提取和审查索引内容。

总结

本示例旨在为你提供构建搜索引擎的起点。Rust的所有权和并发模型,以及它的类型系统,为构建更复杂和高性能的搜索引擎提供了坚实的基础。
我们可以通过添加实时索引、高级文本处理和自定义评分算法等特性来扩展这个项目。

http://www.yayakq.cn/news/505324/

相关文章:

  • h5网站开发案例用php做京东网站页面
  • 新八建设集团有限公司网站开发网站要注意什么问题
  • 电商型网站钓鱼网站盗号下载
  • 自动建设网站系统上海最专业的网站设
  • 南京重庆网站建设c网站开发视频教程
  • 寮步网站建设哪家好网站登录界面html
  • 网站建设私人合同范本绩溪做网站
  • 北京天仪建设工程质量检测所网站山东神华网站建设
  • 臭臭猫网站建设大气家具行业商城类公司网站织梦模板
  • 国外做网站卖东西要什么条件推广 广州网站建设公司
  • 合肥最好的网站建设tcms系统
  • 做箱包哪个网站好蒙阴建设局网站
  • 在线建站平台免费建网站对网站建设的建议
  • 在対网站做可能的来自内部和外部的攻击网富全网营销 有效果吗
  • 企业网站建设 邮箱网页设计作业七步诗
  • 防水自己如何建设网站成都小程序开发公司找哪家
  • 自贡电子商务网站建设wordpress预格式化
  • 招远建网站个人网页制作模板怎么做
  • 网络广告推广方式国外搜索引擎优化
  • 鲁谷做网站的公司佛山网站快速排名提升
  • 网站建设的想法和意见钢材技术支持东莞网站建设
  • wordpress网站打开卡网站首页添加代码
  • 成都市 建设领域信用系统网站还有那个网站可以做兼职呢
  • 个人网站可以做资讯小说类包车哪个网站做的最好
  • 自己做网站要买服务器吗网址二维码生成器
  • 电商网站建设的核心是什么flash制作网站top
  • 系统网站网站建设与推广员岗位职责
  • 免费下载中国移动app福州网站优化公司
  • 做网站首页轮播图代码中文外贸网站有哪些
  • 网站建设都包括什么科目西宁建网站需要多少钱