MySQL 查找子字符串匹配并按匹配全字分组

     2023-02-24     21

关键词:

【中文标题】MySQL 查找子字符串匹配并按匹配全字分组【英文标题】:MySQL Finding Substring Matches and Group by Match Full Word 【发布时间】:2018-08-06 19:59:38 【问题描述】:

使用 MySQL 时,我找不到该表达式的正确术语组合。

在我的语句中使用 PHP 用户输入变量,我需要找到部分子字符串匹配并按完整匹配词分组

以输入示例 "#bea" 我想在全文帖子中查找匹配 "#bea" 作为子字符串,然后分组并计算整个单词它匹配的地方例如 "#beat""#beauty""#beast"

数据库中的示例帖子

Testing Post #beat #beauty

Another test #beauty #beast

Testing #boom #beast

我想搜索一个子字符串,例如“#bea”

并有输出

Match   | Count
#beast  | 2
#beauty | 2
#beat   | 1

这可以用 MySQL 完成,还是我更好地找到匹配项并使用 PHP 算法计算完整的单词?

【问题讨论】:

GROUP BY、LIKE、COUNT() 等 我可以使用 LIKE 和 GROUP BY 但这会返回完整的帖子,我正在寻找一种方法只返回找到子字符串的单词,而不是全文帖子。 【参考方案1】:

试试这个:

SELECT A.word `Match`, COUNT(B.sentence) `Count`
FROM 
(SELECT '#beast' word UNION ALL
SELECT '#beauty' word UNION ALL
SELECT '#beat' word) A LEFT JOIN Sentence B
ON INSTR(B.sentence,A.word)>0
GROUP BY A.word
ORDER BY  `Count` DESC, A.word;

请参阅 DEMO on SQL Fiddle 和 INSTR() function。

【讨论】:

【参考方案2】:

您可以使用以下查询来查找每个单词的计数。

SELECT
sum(INSTR( '#beast' , TABLE.COL) > 0) '#beast',
sum(INSTR( '#beauty' , TABLE.COL) > 0) '#beauty'
FROM
TABLE

然后您可以根据需要进行数据透视表; MySQL pivot table

【讨论】:

Elasticsearch:查找子字符串匹配

】Elasticsearch:查找子字符串匹配【英文标题】:Elasticsearch:Findsubstringmatch【发布时间】:2014-06-0806:15:30【问题描述】:我想同时执行完全单词匹配和部分单词/子字符串匹配。例如,如果我搜索“男士剃须刀”,那么我应该能够... 查看详情

在 .NET 中查找子字符串匹配的结尾

】在.NET中查找子字符串匹配的结尾【英文标题】:Findingtheendofasubstringmatchin.NET【发布时间】:2008-10-0811:56:30【问题描述】:我正在尝试查找与特定文化下的另一个字符串匹配的字符串中的子字符串的索引(由System.CultureInfo提供... 查看详情

查找重叠子串的多个匹配项

...间】:2017-05-0106:53:57【问题描述】:我正在尝试查找重叠字符串的多个匹配项,并带有单词边界。一旦找到一个子串,它就不会被考虑用于未来的匹配,即下一次搜索将在该子串的结尾之后开始。例如,我需要此字符串的这些匹... 查看详情

查找其键与子字符串匹配的字典项

】查找其键与子字符串匹配的字典项【英文标题】:Finddictionaryitemswhosekeymatchesasubstring【发布时间】:2012-05-1602:08:59【问题描述】:我有一个像这样构造的大字典:programs[\'NewYork\']=\'somevalues...\'programs[\'PortAuthorityofNewYork\']=\'someval... 查看详情

查找大型数据集中子字符串的所有匹配项的(行、列)位置

】查找大型数据集中子字符串的所有匹配项的(行、列)位置【英文标题】:Findthe(row,column)locationsofallmatchestoasubstringinlargedataset【发布时间】:2018-07-2023:33:19【问题描述】:在大型数据集中查找包含子字符串“en”的所有匹配项... 查看详情

跨多个候选项查找多个子字符串的最佳匹配

】跨多个候选项查找多个子字符串的最佳匹配【英文标题】:Findbestmatchformultiplesubstringsacrossmultiplecandidates【发布时间】:2020-04-1210:36:38【问题描述】:我有以下示例数据:targets<-c("der","das")candidates<-c("sdassder","sderf","fongs")所... 查看详情

按月聚合组并按给定年份匹配

】按月聚合组并按给定年份匹配【英文标题】:Aggregategroupbymonthsandmatchbygivenyear【发布时间】:2021-12-3009:30:17【问题描述】:我正在尝试按给定年份(比如说2008年)进行匹配,然后从那里按月分组,以便找到2008年每个月的计数... 查看详情

通过Python中的正则表达式优化在两个列表之间查找匹配子字符串

...通过Python中的正则表达式优化在两个列表之间查找匹配子字符串【英文标题】:OptimizingfindingmatchingsubstringbetweenthetwolistsbyregexinPython【发布时间】:2019-08-0818:04:24【问题描述】:这是我在包含“短语”的列表中查找子字符串的方... 查看详情

查找所有匹配的子字符串,而不仅仅是“最扩展”的子字符串

】查找所有匹配的子字符串,而不仅仅是“最扩展”的子字符串【英文标题】:Findingallofthematchingsubstrings,notonlythe"mostextended"one【发布时间】:2012-06-2900:19:26【问题描述】:代码Strings="yzaaabccz";Patternp=Pattern.compile("(a)+(b)+(c*)... 查看详情

搜索元组列表以查找匹配子字符串的算法方法?

】搜索元组列表以查找匹配子字符串的算法方法?【英文标题】:Algorithmicwaytosearchalistoftuplesforamatchingsubstring?【发布时间】:2021-03-0806:25:47【问题描述】:我有一个元组列表,大约有100k个条目。每个元组由一个id和一个字符串组... 查看详情

mysql中的子字符串正则表达式匹配

】mysql中的子字符串正则表达式匹配【英文标题】:Substringregexmatchinginmysql【发布时间】:2021-03-0214:04:42【问题描述】:我有一个复杂的问题困扰了我几个小时,并寻求mysql专家的帮助。:)提前谢谢你。表:t1;列:名称给定表格... 查看详情

仅在 Django 查询中进行全字匹配

】仅在Django查询中进行全字匹配【英文标题】:Whole-wordmatchonlyinDjangoquery【发布时间】:2013-02-0611:57:21【问题描述】:我正在尝试编写一个仅匹配整个单词的Django查询。根据here的回答,我尝试过类似的方法:result=Model.objects.filter... 查看详情

SOLR 中的子字符串匹配

】SOLR中的子字符串匹配【英文标题】:SubstringmatcheswithinSOLR【发布时间】:2011-03-0612:40:53【问题描述】:我似乎无法弄清楚如何使用SOLR查找子字符串匹配项,我已经根据前缀找出匹配项,因此我可以让ham匹配汉堡包。如何搜索... 查看详情

查找所有正则表达式匹配的索引?

...【问题描述】:我正在解析其中可能包含任意数量的引号字符串的字符串(我正在解析代码,并试图避免PLY)。我想知道是否引用了子字符串,并且我有子字符串索引。我最初的想法是使用re查找所有匹配项,然后找出它们所代... 查看详情

kmp模式匹配,查找子字符串(代码片段)

代码解析voidcal_next(char*ptr,int*next,intplen)next[0]=-1;intk=-1;for(inti=1;i<=plen-1;i++)while(k>-1&&ptr[k+1]!=ptr[i])k=next[k];if(ptr[k+1]==ptr[i])k=k+1;next[i]=k;一.voidcal_next(c 查看详情

使用后缀树进行近似子串匹配

...述】:本文讨论了利用suffixtree来缩短匹配时间的近似子字符串匹配技术。每个答案都针对不同的算法。近似子字符串匹配尝试在字符串T中查找子字符串(模式)P,最多允许k不匹配。要了解如何创建后缀树,请单击here。但是,... 查看详情

查找和替换文件中与另一个文件中的字符串匹配的子字符串

】查找和替换文件中与另一个文件中的字符串匹配的子字符串【英文标题】:findandreplacesubstringsinafilewhichmatchstringsinanotherfile【发布时间】:2020-03-2512:03:21【问题描述】:我有两个txt文件:File1是一个有9列的tsv。以下是它的第一... 查看详情

子字符查找kmp算法-子串自匹配索引表

publicstaticint[]kmpTable(char[]seq){int[]tbl=newint[seq.length];tbl[0]=1;for(inti=1;i<seq.length;i++){//子串最开始intj=tbl[i-1];//从已经算出的索引开始l1:for(;j<=i;j++){for(intk=0;j+k<=i;k++){if(seq[j+k]==s 查看详情