查找与文章名称相关的项目

时间:2016-04-28 10:29:01

标签: php mysql elasticsearch

我有一篇文章(标题,正文)存储在mysql中,我有大约1M行(名称)存储在mysql中并使用elasticsearch索引。如何找到行,在文章标题或正文中找到哪些名称(名称的100%匹配)?谢谢你的任何建议。

1 个答案:

答案 0 :(得分:1)

您可以使用LOCATE功能:

SELECT DISTINCT N.Name FROM name_table N, article_table A
WHERE ((LOCATE(N.Name, A.Title) > 0) OR (LOCATE(N.Name, A.Body) > 0));

或加入条件:

SELECT DISTINCT N.Name FROM name_table N JOIN article_table A
ON ((LOCATE(N.Name, A.Title) > 0) OR (LOCATE(N.Name, A.Body) > 0));

Locate函数返回> 0对于这样的输入:locate('oo','Mahmood'), 要解决此问题,您可以将您的名称与空格(或',')

连接起来
SELECT DISTINCT N.Name FROM name_table N JOIN article_table A
ON ((LOCATE(Concat(' ', N.Name, ' '), A.Title) > 0)
OR (LOCATE(Concat(' ', N.Name, ' '), A.Body) > 0));

您可以在条件

中添加其他连接