MySQL在MATCH AGAINST中使用GROUP_CONCAT字段

时间:2011-10-25 04:22:25

标签: mysql sql full-text-search aggregate-functions

我有2张桌子:loinc和panel。我目前有一个成功的GROUP_CONCAT和MATCH AGAINST查询工作。缩短了一点:

SELECT LOINC_NUM as ln,LONG_COMMON_NAME,SYSTEM,
(SELECT GROUP_CONCAT(PARENT_NAME) from panels WHERE LOINC_NUM = ln) as PANEL_STRING,
(SELECT GROUP_CONCAT(PARENT_LOINC) from panels WHERE LOINC_NUM = ln) as PANEL_LOINC_STRING,
MATCH (SYSTEM,LONG_COMMON_NAME) 
AGAINST ('string' IN BOOLEAN MODE) AS score FROM loinc 
WHERE MATCH(SYSTEM,LONG_COMMON_NAME) 
AGAINST ('string' IN BOOLEAN MODE) 
ORDER BY score DESC LIMIT 100

但是,如果我也想对PANEL_STRING'字段'(也是GROUP_CONCAT)进行MATCH。我在其他地方发现我可以将子查询更改为连接,但是这似乎只返回一行,因为并非loinc中的每一行都连接到一个面板。

任何人都愿意帮助我并向我展示我如何能够将GROUP_CONCAT字段用于MATCH AGAINST搜索?感谢

1 个答案:

答案 0 :(得分:0)

如果面板名称是层次结构ID(如001.007.0014),则可以创建以层次结构ID开头的GROUP_CONCAT,然后在末尾添加LOINC编号或LOINC部件编号(如001.007.014:LP7407- 7和001.007.014:9987-6)。使用GROUP_CONCAT,您可以搜索面板的整个部分或仅搜索单个LOINC或LOINC部件。