MySQL/Maria 构建视图匹配缩写到完整描述
Posted
技术标签:
【中文标题】MySQL/Maria 构建视图匹配缩写到完整描述【英文标题】:MySQL/Maria build view matching abbreviations to full description 【发布时间】:2013-05-24 13:25:13 【问题描述】:首先,我不控制我正在管理的数据。它来自电子表格中的客户,我正在尽我所能。我实际上是在处理一团乱麻,并尽我所能使其正常化。
我正在使用 MariaDB 5.5.30,InnoDB 表格式。
我的一个项目要求要求在搜索结果中显示由“标准”缩写(至少在他们公司内部)组成的项目描述。用户可能不知道所有的缩写定义,所以他们最初的想法是一个单独的搜索框来查找一个缩写。相反,我想让用户悬停/点击内联缩写并查看定义的工具提示。
我知道这将涉及某种视图,它将描述中的缩写与缩写表匹配以获取定义。我也知道这可能产生的开销。
我正在寻找一种相对有效的方法(视图、例程等)的建议。即使这意味着构建一个静态表,将项目与提供定义的记录联系起来......
| ITEMS |
|--------------------------------------|
| Item ID | Desc |
|--------------------------------------|
| 1 | CHOC CONG DR DRP 18" 25ct. |
|--------------------------------------|
| ABBREVIATIONS |
|----------------------------------|
| Abbr ID | Abbr | Definition |
|----------------------------------|
| 1 | CHOC | Chocolate |
| 2 | CONG | Congestion |
| 3 | DR | Delayed-Release |
| 4 | DRP | Drops |
|----------------------------------|
缩写可以以几乎任何组合出现在项目描述中。只有与缩写匹配的描述片段才会有工具提示。不幸的是,一些缩写是多个单词,而另一些则少于 4 个字符。
如果这样做会给性能带来痛苦,我愿意回到他们最初的想法。但是为了统一的界面,我认为这会很好。
感谢任何(建设性的)建议。
【问题讨论】:
【参考方案1】:它被搁置了几个月,但我又开始玩这个了......
SELECT ITEMS.ID, ITEMS.Desc, ABBRS.Abbr, ABBRS.Definition
FROM ITEMS
LEFT JOIN ABBREVIATIONS ABBRS ON ITEMS.Desc
LIKE REGEXP CONCAT('.*[[:<:]]', ABBRS.Abbr, '[[:>:]].*');
这会生成多条记录的项目描述,每条记录都有一个匹配的缩写和定义:
| RESULTS |
|----------------------------------------------------------|
| ID | Desc | Abbr | Definition |
|----------------------------------------------------------|
| 1 | CHOC CONG DR DRP 18" 25ct. | CHOC | Chocolate |
| 1 | CHOC CONG DR DRP 18" 25ct. | CONG | Chocolate |
| 1 | CHOC CONG DR DRP 18" 25ct. | DR | Delayed-Release |
| 1 | CHOC CONG DR DRP 18" 25ct. | DRP | Drops |
|----------------------------------------------------------|
REGEXP
使用单词边界标记确保单字母缩写与描述中的部分单词不匹配。
从那里我可以在与缩写匹配的描述子字符串周围放置一个可操作元素,以便他们可以看到定义。
呃。
【讨论】:
以上是关于MySQL/Maria 构建视图匹配缩写到完整描述的主要内容,如果未能解决你的问题,请参考以下文章
我的 Django 视图和 URL 不匹配某处给我一个空白屏幕