草庐IT

MySQL MATCH() AGAINST() 等效于 SQL Server

coder 2023-10-23 原文

有没有办法将这个全文搜索查询从 MySQL 转换成 SQL Server?

SELECT *, MATCH(title) AGAINST('My Title' IN BOOLEAN MODE) AS score FROM books
WHERE MATCH(title) AGAINST('My Title' IN BOOLEAN MODE) ORDER BY score DESC,
books.title ASC

如果有帮助,我专门使用 SQL Server 2000。我没有使用更新版本的选项。 :S

这是一个示例场景。


创建表:

--
-- Table structure for table `books`
--

CREATE TABLE IF NOT EXISTS `books` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `title` (`title`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 ;

--
-- Index the title column
--

ALTER TABLE `books` ADD INDEX ( `title` )

--
-- Dumping data for table `books`
--

INSERT INTO `books` (`id`, `title`) VALUES
(1, 'My Title'),
(2, 'My Title'),
(3, 'Not My Title'),
(4, 'Other Title'),
(5, 'Not Related'),
(6, 'Not Related Either');

执行查询:

SELECT *, MATCH(title) AGAINST('My Title' IN BOOLEAN MODE) AS score FROM books
WHERE MATCH(title) AGAINST('My Title' IN BOOLEAN MODE) ORDER BY score DESC,
books.title ASC

这是返回的内容:

id  title           score
1   My Title        1
2   My Title        1
3   Not My Title    1
4   Other Title     1

感谢您的宝贵时间。

最佳答案

这听起来确实像是实现全文搜索的案例。听起来您所追求的算法比 CHARINDEX 提供的算法复杂得多, PATINDEXLIKE ,这是非常简单的开/关类型结果(字符串包含或不包含搜索的表达式)。

全文搜索的官方 Microsoft 文档 starts here . This article may also be useful ,以及这篇 MSDN 文章,"Improve the performance of full-text indexing" , 和一些 these Full-Text Search tips on mssqltips.com .

您可能最感兴趣的全文关键字是 CONTAINSCONTAINSTABLE . This page describes, among other things, how CONTAINSTABLE applies ranking .

关于MySQL MATCH() AGAINST() 等效于 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11171424/

有关MySQL MATCH() AGAINST() 等效于 SQL Server的更多相关文章

  1. ruby-on-rails - 在 Rails 中将文件大小字符串转换为等效千字节 - 2

    我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,

  2. c# - Ruby 等效于 C# Linq 聚合方法 - 2

    什么是Linq聚合方法的ruby​​等价物。它的工作原理是这样的varfactorial=new[]{1,2,3,4,5}.Aggregate((acc,i)=>acc*i);每次将数组序列中的值传递给lambda时,变量acc都会累积。 最佳答案 这在数学以及几乎所有编程语言中通常称为折叠。它是更普遍的变形概念的一个实例。Ruby从Smalltalk中继承了这个特性的名称,它被称为inject:into:(像aCollectioninject:aStartValueinto:aBlock一样使用。)所以,在Ruby中,它称为inj

  3. ruby-on-rails - Ruby 数组等效于 active record.where(criteria) - 2

    这可能是一段很长的时间,但如果存在的话会让生活变得更轻松一些。无论如何,这都是场景。我有一个散列数组,其中一个键的值是另一个散列.......是的,我知道。这里有一个更好的解释:@myArrayOfStuff[0]@myArrayOfStuff[0]["single-key"]@myArrayOfStuff[0]["single-key"]["object-identifier"]第一个返回一个散列。第二个将返回一个对象(在我的例子中称为页面,但示例使用不同的名称)第三个返回我作为对象标识符引用的任何变量。足够简单。我想做的是选择另一个对象标识符值不为零或大于x的数组。类似于activ

  4. ruby - ruby 中等效的 curl 命令 - 2

    我有一个运行良好的curl命令,但我需要在ruby​​脚本中自动执行它,curl命令:curl-uusrname:pwd-XPOST--data"del=false&val=100"http://localhost:1111/sample/path我写了下面的代码:uri=URI::HTTPS.build(:host=>"localhost",:port=>1111)uri.path=URI.escape("/sample/path")client=Net::HTTP.new("localhost","1111")req=Net::HTTP::Post.new(uri.request_

  5. ruby - 是否有与 'new' 哈希语法等效的 Ruby Hash#to_s? - 2

    Hash#to_s(inspect的别名)始终以1.8哈希样式输出数据:{key:"value"}.to_s=>"{:key=>\"value\"}"是否有任何核心方法将其序列化为1.9哈希样式?{key:"value"}.to_s=>"{key:\"value\"}"我在已知数据上使用它进行代码重构;由于Ruby倾向于实现所有内容,我希望我只是找错了地方。当然,你可以用丑陋的方式破解它"{"+my_hash.to_a.map{|pair|pair[0].to_s+":"+pair[1].inspect}*",\n")+"}"但我希望有一个经过单元测试且完全正确的核心方法。

  6. C# 的 LINQ 用于在 ruby​​ 中等效的集合操作 - 2

    我是ruby​​开发的新手,我目前正在使用rails2.3.11在ruby​​1.8.7中开发一个项目,我想知道这种语言是否有与C#的linq等效的集合操作,例如where子句。谢谢。 最佳答案 Ruby中Linq的where等价于find_all检查documentationfortheEnumerableModule用于其他功能。 关于C#的LINQ用于在ruby​​中等效的集合操作,我们在StackOverflow上找到一个类似的问题: https://

  7. ruby - Ruby 是否提供与 Perl 的 use strict 等效的功能? - 2

    很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。我的意思是,Ruby中没有my。我发现Perl中的usestrict可以提供非常好的防错字保护。

  8. ruby - Array#rotate 在 ruby​​ 1.8.7 中等效 - 2

    a=["a","b","c","d"]a.rotate#=>["b","c","d","a"]#rotate是Ruby1.9中Array的一个方法。我想要Ruby1.8.7中的这个功能。什么是理想的代码? 最佳答案 如果你require'backports/1.9.2/array/rotate',您将在旧版本的Ruby中获得Array#rotate和rotate!。无论哪种方式,您都可以避免重新发明轮子,更重要的是,您可以获得通过RubySpec的实现的优势。它将适用于所有极端情况并确保与Ruby1.9的兼容性。例如,给出的两个答案

  9. ruby-on-rails - pg_search 使用 associated_against 给出错误 "column [model_name].[associated_column_name] does not exist" - 2

    我正在尝试使用pg_search来搜索关联模型。当我运行搜索时,出现错误“PG::Error:ERROR:columnplans.namedoesnotexist”。我正在“计划”模型中运行搜索,并尝试针对“地点”与列“名称”的关联进行搜索。连接这些的has_many:through模型是多态的。不知何故,sql查询将两者结合起来并抛出错误。我已经运行了associated_against迁移(railsgpg_search:migration:associated_against),搜索了文档,并寻找其他有错误的人,但一无所获,一定是我只是忽略了一些东西。如果我只是删除plan.rb

  10. ruby - Nokogiri 等效于 jQuery closest() 方法,用于在树中查找第一个匹配的祖先 - 2

    jQuery有一个可爱的方法,虽然名字有点错误,叫做closest()遍历DOM树寻找匹配的元素。例如,如果我有这个HTML:Yay假设element设置为,然后我可以算出src的值像这样:element.closest('table')['src']如果缺少table元素或其src属性,它将干净地返回“undefined”。在Javascriptland中已经习惯了这一点,我很想在Rubyland中找到与Nokogiri等效的东西,但我能想到的最接近的是使用ancestors()的明显不雅的hack。:ancestors=element.ancestors('table')src=a

随机推荐