我需要使用全文搜索,但是我在Web应用程序中使用的表使用了INNODB引擎,从我读到的JDBC来看,它不支持MysqL触发器,因此我应该将项目部署在课程服务器上,因此安装工具例如狮身人面像是不可能的,有人可以建议一种执行全文本搜索的方法吗?
谢谢
编辑:项目中的要求是要有一个一致的数据库,我要在其上进行搜索的表包含要为其构建Web应用程序的实验室中存在的仪器的列表,可以向其中插入新仪器它,但是我们假设插入访问很少,并且大多数情况下该表将用于读取访问,在这种情况下,使用MyIsam是合理的,并且符合一致性要求(Myisam不支持事务)吗?
这还允许您将MyISAM表中的不同搜索诱饵文本存储为InnoDB表中的“真实”文本,从而允许您实现MySQL的FULLTEXT引擎无法管理的诸如词干或特殊撇号/连字符处理之类的功能.
当然,这里的问题是使MyISAM数据与InnoDB数据保持一致.您可以经常运行一项作业来执行此操作,也可以在有文本更新时使应用程序同时写入两个表.无论哪种方式,都希望您能摆脱全文搜索中的不一致,对于“规范”表数据来说,这种不一致是不可接受的.
另一种方法是在所需的全文解决方案不可用时退回到LIKE / RLIKE(regexp)匹配.将无法索引,因此速度不快,但至少它将始终有效,并且对于较小的数据库也很好.
编辑:
the table on which I want to perform search contains the list of instruments that exist in the lab for which I am building the web application
好吧,那真的必须是全文搜索吗?将这样的列表建模为每种设备类型一个实体,并在实验室和设备(或任何类型的设备)之间建立联接表,会更好吗?
so if 2 inserts happen at the same time?
MyISAM不会让两个INSERT声明相同的主键.但这还不足以保证一般情况下的“一致性”.听起来您可以从实际的角度出发,但是如果明确要求“一致性”,那可能正是他们不希望您这样做的原因.