0

基于以下简化表:

CREATE TABLE Lexicon (
    id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
    term VARCHAR(100),
    entry TEXT,
) ENGINE=InnoDB;

您将如何在数据库中查询诸如条目中不存在的术语之类的内容?或者任何条目中都不存在的术语

我正在考虑使用 aFULLTEXT INDEX on Lexicon(entry)但查询的AGAINST()一部分MATCH()不允许我传递任何绑定。

SELECT term FROM Lexicon 
WHERE NOT MATCH(entry) AGAINST('only-literals-allowed-here' IN BOOLEAN MODE);

那么,全文索引是否可以在这种情况下以某种方式使用,或者具有常规模式匹配查询的普通索引将是唯一的方法?

例如(检查自己的条目):

SELECT term FROM Lexicon
WHERE entry NOT LIKE CONCAT ('%', term, '%');

或者更可怕的(检查表中的所有条目):

SELECT LexiconB.term FROM Lexicon as LexiconA
JOIN Lexicon as LexiconB ON LexiconA.entry NOT LIKE CONCAT('%', LexiconB.term, '%')
GROUP BY LexiconB.term
HAVING COUNT(*) = (SELECT count(*) FROM Lexicon);
4

0 回答 0