首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现基于命中率的多关键字和偏好的映射关键字匹配?

如何实现基于命中率的多关键字和偏好的映射关键字匹配?
EN

Stack Overflow用户
提问于 2011-07-05 22:42:16
回答 1查看 88关注 0票数 0

背景:我正在尝试使用一种流行的“标准”医疗编码系统,该系统使用定义良好的映射提供预先制作的“关键字”表。

简而言之,它基本上将文本描述中的每个单词映射到一个更短的规范化关键字,如下所示:

数据记录id : desc

代码语言:javascript
复制
* 10 : Gonkulator-2500 image reconstruction
* 11 : DICOM image upload
* 12 : SpiffyCont Image Interface 

将映射到关键字索引,如下所示:

关键词: rec_id

代码语言:javascript
复制
* GONKU : 10
* IMAGE : 10
* RECON : 10
* DICOM : 11
* IMAGE : 11
* UPLOA : 11
* SPIFF : 12
* IMAGE : 12
* INTER : 12

最简单的(编码)方法显然是简单地将用户搜索输入以同样的方式映射到关键字,然后执行and查询。

然而,我正在寻找的是通过能够返回部分匹配来提高可用性的东西,以便困惑并搜索“贡科洛-2500图像上传”的用户不会得到空白结果,而是“最接近的匹配”。

代码语言:javascript
复制
* Gonkulator-2500 image reconstruction (66%)
* DICOM image upload (66%)
* SpiffyCont Image Interface (33%)

据我所知,我需要的是record_id:matches级的结果

代码语言:javascript
复制
* 10: 2
* 11: 2
* 12: 1

我非常感谢任何关于如何做到这一点的想法或建议,但是关于数据库规范化的讲座应该更恰当地针对各种国际标准组织。:)

更新:我忘了提(我本打算这么做的。FFB综合征再次来袭),我的第一个想法是子查询:

代码语言:javascript
复制
SELECT rec_id, count(keyword) as matches 
    FROM ( 
         SELECT keyword, rec_id FROM index_tbl 
         WHERE keyword = 'KEY1'  OR keyword = 'KEY2' OR ...etc
     )
GROUP BY rec_id; 

但ISTR认为mysql并不能很好地处理子查询,尤其是在大表(1M+记录)上。也就是说,它弄脏了自己,然后窒息而死。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-06 00:13:32

我猜你没忘了把索引放到表上吧?实际上(除非我没有遗漏什么)这里不需要子查询。

代码语言:javascript
复制
SELECT rec_id, count(keyword) as matches FROM index_tbl WHERE keyword = 'KEY1' ... GROUP BY rec_id;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6584527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档