Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
索引文本-MySQL与MS SQL_Mysql_Sql Server_Full Text Indexing - Fatal编程技术网

索引文本-MySQL与MS SQL

索引文本-MySQL与MS SQL,mysql,sql-server,full-text-indexing,Mysql,Sql Server,Full Text Indexing,图像您有这样的应用程序:1db表,几个int字段,几个小varchar字段,和大约10个文本字段(内容变量-一些数据大约50个字符长,大多数大约100-200,一些大约1000,很少超过1000)。行计数以x0 000-x0 000为单位。 现在,我需要这样的有效查询方式(元语言): 选择(1如果textfield1类似于%param1%ELSE 0)作为r1,(1如果textfield2类似于%param2%ELSE 0)作为r2。。。等等,对于1个查询中的大多数文本字段,通常是动态的(可能包

图像您有这样的应用程序:1db表,几个int字段,几个小varchar字段,和大约10个文本字段(内容变量-一些数据大约50个字符长,大多数大约100-200,一些大约1000,很少超过1000)。行计数以x0 000-x0 000为单位。 现在,我需要这样的有效查询方式(元语言):

选择(1如果textfield1类似于%param1%ELSE 0)作为r1,(1如果textfield2类似于%param2%ELSE 0)作为r2。。。等等,对于1个查询中的大多数文本字段,通常是动态的(可能包括其中的2个,也可能是全部)

现在的问题是,MySQL或MSSQL(可能是express,但可能是express,如果真的需要,可以升级到full)对我来说什么更好

我知道MySQL有很好的文本索引,您已经在第一个字符的自定义数量上设置了这些索引,因此我可以在典型场景中对其进行平衡(如下所示:)

MSSQL只有全文索引,我没有这方面的经验。请注意,我不需要诸如单词邻近性或类似单词之类的特性(run=ran;一些词干分析会很好,但因为数据是多语言的,所以无论如何都不可能)。我只需要常用的%word%系统,仅此而已。我还必须能够找到短的子字符串(2个字符)

实际上,我们的目标是每小时/天运行尽可能多的这些查询(不会有足够的结果,永远不会,因为它们应该尽可能频繁地刷新),所以将这种效率视为要求:)

塔克斯


更新:很显然,没有办法使用索引来优化%foo%之类的查询。因此,新的问题是:有没有其他方法可以加快这类查询的速度?(请省略“购买更多ram或SSD”之类的内容):

如“%foo%”
表达式无法在任何RDBMS中优化

在或中需要全文索引

我需要的只是像%word%系统一样的普通版本


然后选择您想要的任何DBMS,因为它们都会吸收这样的子句;-)

如今,许多应用程序使用外部索引和搜索引擎


看看

你确定吗?你看过我包含的关于mysql的链接了吗?在我看来,这家伙几乎优化了一个查询,就像在文本上使用索引一样fields@rouen:类似于“foo%”的
与类似于“%foo%”的
之间存在显著差异。后者无法使用索引进行优化。根据定义。阅读关于B-树的文章。非常感谢你的提示,我看了一下,很快就原型化了一些东西,Lucene.NET似乎是一个不错的选择。。快速灵活,我真的很惊讶:)