mariadb SQL查询|搜索大字符串以返回在表中找到的关键短语

hs1ihplo  于 2022-12-23  发布在  其他
关注(0)|答案(2)|浏览(140)

我有一个表,其中有大约3000个不同的关键短语(小字符串)。我需要一个查询,它接受一个大字符串(如一个大句子或段落)的输入,并返回存在于大字符串中的关键短语的记录。
简化示例:表有5条记录:“钓鱼”、“池塘”、“云”、“大的”、“房子”。
大字符串输入:“我家有个池塘,我决定去钓鱼,结果钓到了一条大的。”
查询输出(匹配记录):池塘,房子,钓鱼,大的
谢谢你,詹姆斯
我尝试了几个select语句,但没有效果。也许我需要在执行语句/查询之前将大字符串解析成某种数组?

dsf9zpds

dsf9zpds1#

with small (term) as (
        select 'fishing'
  union select 'pond'
  union select 'cloud'
  union select 'big one'
  union select 'house'
)

select term
from small
where 'I have a pond at my house. I decided to go fishing and caught a big one.' 
  REGEXP concat('(^|.*[^a-z])', term, '([^a-z].*|$)') = 1
x33g5p2x

x33g5p2x2#

不管输入的字符串有多大,都可以使用FULLTEXT索引。
然后使用以下命令:

SELECT * FROM `table_name` 
WHERE MATCH(records) AGAINST ('"your large string"' IN BOOLEAN MODE) AS relevance;

有关更多信息,请参阅这些答案:

相关问题