› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
y051313
V2EX  ›  MySQL

求助:同义词/反义词数据库设计

  •  
  •   y051313 · Feb 16, 2013 · 6217 views
    This topic created in 4974 days ago, the information mentioned may be changed or developed.
    要做一个同义词,反义词查询数据库。

    同义词部分,我准备把每组同义词都放在一个字段里面,用特殊字符分开,类似“首脑~~~领袖~~~首长~~~首领”,然后根据用户输入,去掉当前查询关键词,把剩下的部分显示出来

    但是反义词部分,有点问题,我手头的数据是类似下面这种:
    "左右为难= 应付自如 得心应手 左右逢源"

    等号左边始终是一个词,等号右边是对应的1个或多个反义词。我希望用户不论是查左右为难,还是应付自如都能得到反应词。这样的话应该如果设计表结构?

    目前想到的方法还是放到一个字段,形成类似“左右为难|||应付自如~~~得心应手~~~左右逢源"的结构,然后用户查询的时候先判断是在|||左边还是右边,然后取对应的部分显示出来。

    大家有别的什么方案吗?同义词和反义词可以分开成两个表,当然最好是一个表

    谢谢
    8 replies  •  1970-01-01 08:00:00 +08:00
    wog
        1
    wog  
       Feb 17, 2013
    弄成两列,“左右为难”作主键,跟“应付自如~~~得心应手~~~左右逢源”分开
    napoleonu
        2
    napoleonu  
       Feb 17, 2013
    我建议你还是想办法把这些数据做成一对多,多对多形式的“源关系数据”,可能很大,但不一定要实时查询。

    之后如果为了查询速度可以在“源关系数据”基础上跑一遍对“词语表”生成两个冗余列,一列存所有近义词,一列存所有的反义词。或者使用mc,redis什么的缓存起来。

    随着你词库越来越大,这样的“源关系数据”维护起来方便还干净,重新生成冗余列或者缓存也方便。
    alexrezit
        3
    alexrezit  
       Feb 17, 2013 via iPhone
    都是多对多吧...
    ergatea
        4
    ergatea  
       Feb 17, 2013
    tags
    est
        5
    est  
       Feb 17, 2013
    其实这个用bitset做很方便,可惜没有对bitset优化的数据库。。。
    ljbha007
        6
    ljbha007  
       Feb 17, 2013 via Android
    两张表 表1 words: word_id, word, group_id
    表2 antonyms: antonyms_id, group_id1, group_id2
    表3(可选) groups: group_id

    每个词都有一个对应的近义词组 意思相反的词组之间一一对应 对应关系在表2中体现
    y051313
        7
    y051313  
    OP
       Feb 17, 2013
    @ljbha007
    等于说你把每个词都放在words表里面,然后里面记录它属于哪个group_id,也就是同义词组。然后在antonyms表里面记录反义词组对,对吗?

    group和words是1:1还是1:N?
    ljbha007
        8
    ljbha007  
       Feb 20, 2013
    @y051313 几天没上 刚看到 group 和words是1:N
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   852 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 19:29 · PVG 03:29 · LAX 12:29 · JFK 15:29
    ♥ Do have faith in what you're doing.