我正在寻找具有以下属性的独立全文搜索服务器:
我发现具有这些属性的替代方案是:
我的问题:
我最近从Postgres切换到了Solr,在查询中加速了~50倍.我们运行的查询涉及多个范围,我们的数据是车辆清单.例如:"查找里程<50,000,$ 5,000 <价格<$ 10,000,make = Mazda ......"的所有车辆
我在Postgres的所有相关专栏上创建了索引,所以它应该是一个相当公平的比较.看看Postgres中的查询计划虽然它仍然只是使用单个索引然后扫描(我假设因为它无法使用所有不同的索引).
据我了解,Postgres和Solr使用模糊相似的数据结构(B树),它们都将数据缓存在内存中.所以我想知道这么大的性能差异来自哪里.
架构有什么不同可以解释这一点?
我一直在寻找Rails的插件/宝石.大多数文章将Ferret(Lucene)与Ultrasphinx或者可能是Thinking Sphinx进行了比较,但没有人谈论SearchLogic.有没有人有任何关于这个比较的线索?你用了什么,它的表现如何?
我正在尝试创建一个脚本,在我的表行之间找到匹配的百分比.例如,表产品中的mySQL数据库包含字段名称(索引,FULLTEXT),其值为
LG 50PK350 PLASMA TV 50" Plasma TV Full HD 600Hz
LG TV 50PK350 PLASMA 50"
LG S24AW 24000 BTU
Aircondition LG S24AW 24000 BTU Inverter
Run Code Online (Sandbox Code Playgroud)
正如您可能看到他们所有人都有相同的关键字.但第一个名字和第二个名字更相似.此外,第3和第4关键字之间的关键字比第1和第2更相似.
我的mySQL DB有数千个产品名称.我想要的是找到那些具有超过百分比(比如说60%)相似性的名称.
例如,正如我所说,第一个,第二个(以及任何其他名称)在它们之间匹配超过60%,将以组样式格式回应,让我知道这些产品是相似的.第3和第4个以及任何超过60%匹配的任何其他组合将在另一组中回显,告诉我这些产品匹配.
如果可能,那么回显满足所有分组匹配名称的关键字将会很棒.例如,LG S24AW 24000 BTU是包含在第3和第4名称中的关键字.
最后,我将创建所有这些关键字的列表.
我现在有以下查询(如Jitamaro建议)
Select t1.name, t2.name From products t1, products t2
Run Code Online (Sandbox Code Playgroud)
在所有其他名称旁边创建一个新名称字段.对不起,我不知道如何解释它,但这就是它的作用:(真正的价值观是上面的产品名称)
在查询之前
-name-
A
B
C
D
E
Run Code Online (Sandbox Code Playgroud)
查询后
-name- -name-
A A
B A
C A
D A
E A
A B
B B
C B
D B
E …Run Code Online (Sandbox Code Playgroud) 读取查询
在Posgres中,全文索引允许对文档进行预处理并保存索引以供以后快速搜索.预处理包括:
将文档解析为标记.
将标记转换为词位.
存储为搜索而优化的预处理文档.
tsvector 在Postgres中使用type进行全文搜索
tsvector类型与text下面的类型不同:
消除案件.大写/小写字母相同
删除停用词(和,或者,不是,她,他和其他数百个) - 因为这些词与文本搜索无关
替换同义词并取词干(elephant- > eleph).在全文目录中,它没有单词elephant而是单词elep.
可以(并且应该)使用GIST和GIN编制索引
自定义排名与权重和 ts_rank
弹性搜索(搜索引擎)如何优于Postgres中的全文搜索?
postgresql indexing full-text-search object-oriented-database elasticsearch
这无疑与全文搜索引擎的比较相似(但不是重复)- Lucene,Sphinx,Postgresql,MySQL?然而,我正在寻找的是具体的,支持的,来自多个可用系统的经验益处的建议(似乎有很多:"我使用过lucene,但不是sphinx",并且副反之亦然).
设置:标准LAMP(Mysql 5.0,PHP 5).
MySQL:表正在使用InnoDB引擎进行外键约束
我们正在研究索引数据,而不是页面.要索引的数据可能是多种语言(utf-8 charset)
我遇到的一些比较(如http://blog.evanweaver.com/articles/2008/03/17/rails-search-benchmarks/)要么不完全适用(雪貂是一个lucene端口但不是与Zend_Search_Lucene相同,或者他们正在推动他们自己的系统/实现(不完全不偏不倚).
我遇到的其他一些(例如http://whatstheplot.com/blog/tag/lucene/和http://pagetracer.com/2008/02/15/sphinx-and-lucene-search-engines-first -impressions /)为两个系统的性能提供了截然不同的结果.
此外,在我读过的大部分内容中,忽略了Xapian.这还值得考虑吗?
所以...我希望你们这里的一些人对这个问题有一些经验,可以帮助提出一些建议,或指出我正确的方向.
描述:我有一个庞大的MySQL数据库表.总大小约为10太字节.它只包含文本.
此数据库表中的示例文本:
在其他情况下,一些国家逐渐学会生产与以前只有美国和其他一些国家可以生产的相同的产品和服务.美国的实际收入增长放缓.
大约有500亿种不同的文本.
我试过了什么?
我试图将它们全部压缩.实际上它已经工作,减少了总大小.但是,我需要进行搜索,并且当它们位于zip文件中时我无法搜索任何数据.
我试过PHP的base64编码.它使我的示例文本数据为:
SW4gb3RoZXIgY2FzZXMsIHNvbWUgY291bnRyaWVzIGhhdmUgZ3JhZHVhbGx5IGxlYXJuZW QgdG8gcHJvZHVjZSB0aGUgc2FtZSBwcm9kdWN0cyBhbmQgc2VydmljZXMgdGhhdCBwcmV2 aW91c2x5IG9ubHkgdGhlIFUuUy4gYW5kIGEgZmV3IG90aGVyIGNvdW50cmllcyBjb3VsZC Bwcm9kdWNlLiBSZWFsIGluY29tZSBncm93dGggaW4gdGhlIFUuUy4gaGFzIHNsb3dlZC4 =
我想要完成什么?
我想在将它们发送到MySQL之前减少文本的大小.首先,我不知道我怎么能做这份工作.我正在考虑加密和解密数据.
所以,这是一个我想做的例子:
我想在存储之前加密文本数据.然后,我想从MySQL调用加密数据以便解密.
有什么方法可以减少文本的大小吗?Base64对我不起作用,还有其他方法吗?
我正在寻找一个可移植的全文搜索引擎,可以在ASP.NET中使用.
这是我的情景:我有4千万客户的名字,我想通过搜索他们的名字找到他们的CustomerId.我知道MS-SQL全文搜索可能是一个合理的解决方案,但由于其安装,许可和一些DBO任务,我想知道是否有另一种解决方案.
我测试过Lucene.net,插入速度很慢,所以我已经放弃了!
我也看到了hOOt(我还没有测试过).
问题:有没有资源可以看到全文搜索引擎的比较?哪个最符合我的需求?
我的英语技能不好.所以请试着理解我说的话.谢谢 !
我想创建一个Android词典应用程序,但我没有经验.我做了一项研究,创建数据库有两种选择:Lucene和SQLite全文搜索.所以我做了一个应用程序作为一些教程.我发现FTS使用虚拟表来存储数据库,但问题是第一次向虚拟表添加数据时应用程序冻结(从文本文件大约10000行).搜索功能也需要很长时间(约10秒)
然后,我找到了一些关于Lucene的其他教程.Lucene创建了一个用于搜索的索引目录,但我不知道它有多快(使用大数据).有人可以就我的问题给我一些建议吗?
我正在运行一个小型网站,其中我想制作像"相关链接"部分这样的功能.
为此,我创建了全文目录和索引.
到目前为止,我尝试了很多方法来创建搜索查询,其行为类似谷歌,但我会说我甚至没有接近谷歌正在做的10%.在我的研究期间,我发现只有在查询之后才能提供良好的记录.
Select col1, col2
from MyTable
Where
FREETEXT(col1, 'User Passed Search Text')
Run Code Online (Sandbox Code Playgroud)
有没有人有很好的方法来创建一个FullText搜索查询,它可以帮助获得给定文本更好的相关记录?
谢谢
我正在准备我的文凭考试,主题是 Apache SOLR 中的全文搜索。在介绍中,我应该详细说明 Apache SOLR 的目的和优点,即为什么人们会选择像 SOLR 这样的全文搜索引擎而不是 MySQL。使用像“SOLR in action (2013)”这样的文献,人们会说很容易确定在那个时代何时使用 SOLR、ElasticSearch 或其他东西,而不是 MySQL。2010 年还有一个很棒的问题: Comparison of full text search engine - Lucene, Sphinx, Postgresql, MySQL? 。唉,尽管 2010 年左右的答案很伟大,但现在看来答案已经过时了。例如“MySQL MyISAM 表类型支持全文搜索,但 InnoDB 不支持”。几年后,InnoDB 也添加了全文搜索支持。现在,有一些文章设法阐明了这一点,例如 https://lucidworks.com/post/full-text-search-engines-vs-dbms/其中指出全文搜索系统的优点是
搜索速度、各种索引和查询选项、排名和相关性功能...
然而,还有很多其他文章指出了诸如
MySQL 全文搜索现在可以在 80% 的情况下满足您的需求
等等,看来近10年来MySql、MongoDB、PostgreSQL等关系型数据库的全文检索能力急剧提升。
然而, https://db-engines.com/en/ranking_trend/system/Elasticsearch%3BMySQL%3BSolr上的图表显示,全文搜索引擎并没有失去人气,但它们的使用量正在增长,甚至 SOLR 也在失去速度渐渐地,现在似乎正在醒来。
那么,一定有什么事情吗?是那个吗:
ETC。
简而言之,是什么让您现在选择 Apache SOLR 或 Elastic,而不是 MySQL 或其他具有增强的全文搜索功能的关系数据库?如果您的关系数据库或 NoSQL 数据库中已经有数据,那么为什么 Apache SOLR 和 Elastic Search 仍然那么受欢迎,因为使用它们需要另一堆资源和管理?
所以核心问题是:如果我有一个使用 MySQL 数据库进行数据存储的系统,并且我需要为一个或多个字段添加全文搜索功能,包括模糊搜索(拼写错误)、同义词、词干提取,以处理相关性和排名以自定义方式,通常使用 MySQL FTS 更好(因此不需要另一堆资源和管理),还是像 Apache SOLR 或 Elastic …
lucene ×6
mysql ×5
php ×3
solr ×3
sphinx ×3
postgresql ×2
search ×2
sql-server ×2
.net ×1
android ×1
c# ×1
dictionary ×1
encoding ×1
freetext ×1
indexing ×1
lucene.net ×1
performance ×1
rdbms ×1
searchlogic ×1
sql ×1
sqlite ×1