MySQL 在 MATCH AGAINST 中使用 GROUP_CONCAT 字段

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

我有 2 个表:loinc 和 panels。我目前有一个成功的 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)。我在别处发现我可以将子查询更改为连接,但是这似乎只返回一行,因为并非 loinc 中的每一行都连接到面板。

任何人都愿意帮助我并告诉我如何使 GROUP_CONCAT 字段成为我可以用于 MATCH AGAINST 搜索的字段?谢谢

最佳答案

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

关于MySQL 在 MATCH AGAINST 中使用 GROUP_CONCAT 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7884678/

相关文章:

mysql - 如何过滤存储为varchar的mysql数据库中的ip地址

sql - 根据日期范围,我如何知道有多少用户每周活跃 3-5 天?

java - 如何在 JUnit 中刷新 App Engine SearchServiceFactory 异步操作?

Django 和 PostgreSQL 全文搜索 : Some terms not found by search lookup

mysql - 停用词和 MySQL bool 全文

mysql - Laravel - SUM 和 balane 查询

python - MYSQL 和 python 错误

php - 通过 mktime 查找所有月份

mysql - 计算数据库表的总数并合并来自不同表的结果

mysql - 检查mysql中两列是否有相同数据的行