Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/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搜索中搜索独立单词?_Mysql_Ruby On Rails_Ruby_Regex_Sqlite - Fatal编程技术网

如何在mySQL搜索中搜索独立单词?

如何在mySQL搜索中搜索独立单词?,mysql,ruby-on-rails,ruby,regex,sqlite,Mysql,Ruby On Rails,Ruby,Regex,Sqlite,我想在句子中找到狐狸这个词狐狸棕色的狐狸跳过了懒狗。 目前,我使用以下SQL进行搜索: SELECT * FROM sentences WHERE sentence LIKE '%fox%' 这句话是因为狐狸的存在,而不仅仅是狐狸。我如何独立地找到福克斯 我正在Ruby on Rails中实现此搜索,因此上述SQL的语法将转换为以下内容: query = 'fox' result = Sentence.where("sentence LIKE :search_term", {:sea

我想在句子中找到狐狸这个词狐狸棕色的狐狸跳过了懒狗。 目前,我使用以下SQL进行搜索:

SELECT * 
  FROM sentences 
 WHERE sentence LIKE '%fox%'
这句话是因为狐狸的存在,而不仅仅是狐狸。我如何独立地找到福克斯

我正在Ruby on Rails中实现此搜索,因此上述SQL的语法将转换为以下内容:

query = 'fox'
result = Sentence.where("sentence LIKE :search_term", {:search_term => "%#{query}%"})

您需要将REGEXP工具与单词边界表达式一起使用。[[::]]. 比如说

SELECT * FROM sentences WHERE sentence REGEXP '[[:<:]]fox[[:>:]]'

这将处理“fox”前面或后面有逗号、字符串开头/结尾或其他非单词字符的情况。单词字符定义为[_A-Za-z0-9]。这里有一个指向文档的链接:

您需要使用REGEXP工具和单词边界表达式。[[::]]. 比如说

SELECT * FROM sentences WHERE sentence REGEXP '[[:<:]]fox[[:>:]]'

这将处理“fox”前面或后面有逗号、字符串开头/结尾或其他非单词字符的情况。单词字符定义为[_A-Za-z0-9]。这里有一个指向文档的链接:

数据库上的文本搜索速度慢、成本高且无法扩展。如果这是一个生产应用程序,你应该考虑把它移到像Salr OS狮身人面像这样的全文搜索解决方案。全文搜索FTS是SQL功能来提供你想要的东西——ReGEX将工作,但从来没有超过FTS或类似的。为什么这个问题有Ruby标签?@安得烈-因为我在Ruby on Rails中实现这个。我将编辑标签,使其更具体,并在我的问题中提及。数据库上的文本搜索速度慢、成本高且无法扩展。如果这是一个生产应用程序,你应该考虑把它移到像Salr OS狮身人面像这样的全文搜索解决方案。全文搜索FTS是SQL功能来提供你想要的东西——ReGEX将工作,但从来没有超过FTS或类似的。为什么这个问题有Ruby标签?@安得烈-因为我在Ruby on Rails中实现这个。我会编辑标签,使它们更具体,并在我的问题中提及。谢谢你的回答。然而,这似乎不适用于SQLite3和RubyonRails3.1。我一直得到SQLite3::SQLException:没有这样的函数:REGEXP。有没有办法解决这个问题?谢谢我想其他人可能有这个问题,所以我在这里贴了一个单独的问题:谢谢你的回答。然而,这似乎不适用于SQLite3和RubyonRails3.1。我一直得到SQLite3::SQLException:没有这样的函数:REGEXP。有没有办法解决这个问题?谢谢我想其他人可能会有这个问题,所以我在这里发布了一个单独的问题: