在表格中搜索动词+名词

问题描述

信息

我有一张桌子,上面列出了动词和形容词。我还有一张列出名词的表格。我的第三个表格是我们的搜索字段。

我想做什么?

我想在我们的搜索字段表中搜索动词+形容词。所以我想找到动词+名词形容词+名词

示例

我们在搜索字段表中有记录:

  1. buildawall
  2. redtree
  3. countonyou
  4. purchaseanapple

结论

所以我在动词+形容词表和名词表中有那个词(构建,墙,红色,树,购买,苹果,计数,你)如何通过我的名词和形容词+动词表以正确的顺序找到它们?我所说的正确顺序是动词+名词形容词+名词

Ps:您知道有时我们需要英语介词。但是我不介意他们在搜索中。不用介意这些类型的结果对我来说是正确的:

动词+(任何字符)+名词

形容词+(任何字符)+名词

我尝试了什么?

好吧,我尝试了一个sql查询:

SELECT * FROM adjectiveVerbList INNER JOIN searchField ON searchField.text LIKE CONCAT('%',adjectiveVerbList.word,'%')

但是您可以看到此查询只是一个简单的查询。这是行不通的。 通过我可以用php或仅执行SQL查询的方式都没关系。

编辑:我的表格:

CREATE TABLE `adjectiveVerbList` (
  `id` int(10) UNSIGNED NOT NULL,`word` varchar(100) NOT NULL,`type` enum('adjective','verb') NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `adjectiveVerbList` (`id`,`word`,`type`) VALUES
(1,'abandoned','adjective'),(2,'able',(3,'absolute',(4,'adorable',(5,'adventurous',(6,'academic',(7,'acceptable',(8,'acclaimed',(9,'accomplished',(10,'accurate',(11,'aching',(12,'acidic',(13,'acrobatic',(14,'active',(2363,'whip','verb')



CREATE TABLE `nounList` (
  `id` int(10) UNSIGNED NOT NULL,`word` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Tablo döküm verisi `nounList`
--

INSERT INTO `nounList` (`id`,`word`) VALUES
(1,'ATM'),'CD'),'SUV'),'TV'),'aardvark'),'abacus'),'abbey'),'abbreviation'),'abdomen'),'ability')


CREATE TABLE `searchField` (
  `id` int(10) UNSIGNED NOT NULL,`word` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `searchField` (`id`,'buildawall')
(2,'redtree')
(3,'greenmybuild')
...

输入

buildawall(来自searchField表)

输出

这是正确的,因为我们在 adjectiveVerbList 中有'build'字,在 nounList 表中有'wall'字。并且构建在墙之前,因此易于阅读。

解决方法

更改为您的对象名称。 我将数据放入前面的WITH子句中,将标记“真实”查询的开始位置。但是,您没有指定所需的输出,因此我假设了一些东西。我使用的数据与您的第一个搜索词组匹配。

WITH
-- input ....
phrases(id,phrase) AS (
          SELECT 1,'buildawall'
UNION ALL SELECT 2,'redtree'
UNION ALL SELECT 3,'countonyou'
UNION ALL SELECT 4,'purchaseanapple'
),adjectiveverblist (id,word,type) AS (
          SELECT 1,'build','verb'
UNION ALL SELECT 2,'red','adjective'
UNION ALL SELECT 3,'count','verb'
UNION ALL SELECT 4,'purchase','verb'
),nounlist(id,word) AS (
          SELECT 1,'wall'
UNION ALL SELECT 2,'tree'
UNION ALL SELECT 3,'you'
UNION ALL SELECT 4,'apple'
)
-- end of input - real query starts here ...
SELECT
  phrase,av.word AS adjective_verb,av.type AS av_type,n.word  AS noun
FROM phrases
JOIN adjectiveverblist av ON phrase LIKE '%' + av.word + '%'
JOIN nounlist n ON phrase LIKE '%' + n.word + '%'
;
-- out      phrase      | adjective_verb |  av_type  | noun  
-- out -----------------+----------------+-----------+-------
-- out  redtree         | red            | adjective | tree
-- out  buildawall      | build          | verb      | wall
-- out  countonyou      | count          | verb      | you
-- out  purchaseanapple | purchase       | verb      | apple

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...