Ida*_*ter 3 mysql asp.net full-text-search elasticsearch mysql-5.6
我正在ASP.NET 4.5 C#中构建一个Web应用程序.我的应用程序将在很大程度上依赖于搜索功能.我正在为我的项目寻找一个高性能的搜索解决方案.我正在研究一种高效/快速且易于实施的方法.
经过一些解决方案后,我发现ElasticSearch提供了出色的搜索功能,如果我决定在那里部署我的项目,它也会得到Amazon Web Services的支持.
但是,我已经读过MySQL 5.6现在具有InnoDB表的全文搜索功能.我想知道每种方法的不同,缺点和优点,以便决定在我的下一个项目中使用哪一种方法.
我的主要目标是:能够对我的数据库进行非常快速的搜索,并享受自然语言搜索,评分等的好处.对于我的可搜索文本字段,我实际上会有非常小的100个字符的文本字段.
我的问题摘要:
谢谢.
Prz*_*ita 13
我不是很熟悉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可能非常具有挑战性.在我的例子中,我必须实现一个非常复杂的Query构建器,因为在ElasticSearch上执行搜索查询的方法很多 - 请参阅http://www.elasticsearch.org/guide/reference/query-dsl/(所有这些查询类型)在NEST库中实现).您对匹配字符串的查询方式与过滤数据的方式完全不同,例如.GreaterThan或LessOEqual.
ES允许你利用基于Levenshtein距离的模糊匹配,这在与拼写错误进行斗争时非常好.
ElasticSearch非常非常快.MS SQL Server搜索我的数据(通过简单查询)超过1分钟,ES在不到20毫秒的时间内完成(即使使用非常复杂的查询).它是Lucene搜索引擎的分布式实现.
我知道我的帖子不是你的问题的直接答案,但我希望它能为你提供有关ElasticSearch的一些信息,并以任何方式帮助你.干杯.
归档时间: |
|
查看次数: |
4181 次 |
最近记录: |