数据库
首页 > 数据库> > MySQL 5.6全文搜索与ElasticSearch for ASP.NET 4.5 Web App

MySQL 5.6全文搜索与ElasticSearch for ASP.NET 4.5 Web App

作者:互联网

我正在ASP.NET 4.5 C#中构建一个Web应用程序.我的应用程序将在很大程度上依赖于搜索功能.我正在为我的项目寻找一个高性能的搜索解决方案.我正在研究一种高效/快速且易于实施的方法.

经过一些解决方案后,我发现ElasticSearch提供了出色的搜索功能,如果我决定在那里部署我的项目,它也会得到Amazon Web Services的支持.

但是,我已经读过MySQL 5.6现在具有InnoDB表的全文搜索功能.我想知道每种方法的不同,缺点和优点,以便决定在我的下一个项目中使用哪一种方法.

我的主要目标是:能够对我的数据库进行非常快速的搜索,并享受自然语言搜索,评分等的好处.对于我的可搜索文本字段,我实际上会有非常小的100个字符的文本字段.

我的问题摘要:

> MySQL 5.6全文搜索和ElasticSearch之间的基本区别是什么? (的优点和缺点)
>使用MySQL全文搜索,我是否需要将搜索索引/功能与数据库分开(例如,使用ElasticSearch我使用的是ELasticSearch服务器,我可以将其部署在不同的服务器上.我想知道它是否与MySQL的工作方式相同全文搜索呢?
>哪一个更容易实现?
>在ASP.NET项目中使用它们是否有任何优点(如支持的客户端库等)

谢谢.

解决方法:

我不是很熟悉MySQL 5.6全文搜索功能,但我在ASP.NET Web App中使用ElasticSearch.

>在SQL中查询MySQL,在JSON中查询ES,因为它是RESTful
>虽然MySQL是数据库管理系统本身,但ElasticSearch只是一个搜索引擎.执行搜索的数据存储在其索引中(ElasticSearch数据存储称为索引).这个索引有时候会失败,然后你需要在一些外部数据库中备份你的数据(我正在使用NoSQL解决方案 – MongoDB,因为我很难解决BigData问题),你可以从中恢复它.
> ElasticSearch是分布式系统.它使用Shards – 当您执行搜索时,索引会被分割为多个分片,这些分片由不同的线程独立搜索.然后将搜索结果合并为一组.由于评分是根据执行搜索的记录数量以某种方式计算的,因此对于同一记录可能会有所不同,具体取决于它是哪个分片以及分配给此分片的记录数(尽管可在搜索查询选项中配置) – 见DFSThenFetch)
> ES可以通过NEST库使用C#代码进行交互,这允许您将ES实体映射到C#类并通过LINQ通过lambda语法查询它们(利用表达式而不是谓词)
>如果您的实体有很多字段,查询ElasticSearch可能非常具有挑战性.在我的情况下,我必须实现一个非常复杂的查询构建器,因为在ElasticSearch上执行搜索查询的方法很多 – 请参阅http://www.elasticsearch.org/guide/reference/query-dsl/(所有这些查询类型都在NEST库中实现).您对匹配字符串的查询方式与过滤数据的方式完全不同,例如. GreaterThan或LessOEqual.
> ES允许您利用基于Levenshtein距离的模糊匹配,这在与拼写错误进行斗争时非常好.
> ElasticSearch非常非常快. MS SQL Server搜索我的数据(通过简单查询)超过1分钟,ES在不到20毫秒的时间内完成(即使使用非常复杂的查询).它是Lucene搜索引擎的分布式实现.

我知道我的帖子不是你的问题的直接答案,但我希望它能为你提供有关ElasticSearch的一些信息,并以任何方式帮助你.干杯.

标签:mysql,asp-net,elasticsearch,full-text-search,mysql-5-6
来源: https://codeday.me/bug/20190714/1460266.html