我在我的网站上使用wordNet数据库,我正在寻找同义词。
情景是
该网站是一个电子商务网站。有一个用户搜索框。一旦用户键入要搜索的关键字,系统将根据用户输入直接找到同义词,并将其与我自己的数据库匹配并显示结果。因此,例如,在我的数据库中,只有名称为microwave的项目。但在我得到微波炉的同义词之后,还有另一个基于微波炉的同义词,比如烤箱。
所以,我想要的是,即使用户输入“烤箱”,系统也会显示微波的结果,因为基本上这两件事情都是一样的。
我正在考虑将一个数组放入wordNet数据库的第一个同义词结果中。但是,问题是如何根据同义词显示结果?
我正在考虑像这样的查询。此查询是从我自己的数据库获取数据并使用从wordnet数据库中检索的数据列表Select the information needed
from the database table
where category.name LIKE (the array of result from wordnet database)
我是对的吗?
请注意,我已成功从wordnet数据库中检索同义词。问题是如何使用从wordnet数据库中检索到的同义词列表来生成来自我的数据库的数据?
有人可以指导我吗?
非常感谢任何帮助。感谢
答案 0 :(得分:1)
假设$array
包含来自wordNet的同义词类别。要将其转换为可在查询中使用的字符串,请执行以下操作:
$category_string = '"' . implode('","',$array) . '"';
这会将您的数组转换为字符串,并按","
分隔元素。该字符串在结尾和开头都有一个"
,因此可以插入到SQL IN
语句中。
您的SQL命令需要JOIN
三个表(products
,categories
和product_categories
),并为所需的类别名称设置WHERE
过滤器。 SELECT
命令看起来与此类似:
SELECT * FROM products, categories, product_categories WHERE products.product_id = product_categories.product_id AND product_categories.category_id = categories.category_id AND categories.category_name IN (INSERT CATEGORY NAMES)
如果要使用PHP运行SELECT
命令,则必须如下所示:
$sql = 'SELECT * FROM products, categories, product_categories WHERE products.product_id = product_categories.product_id AND product_categories.category_id = categories.category_id AND categories.category_name IN (' . $category_string . ')';
答案 1 :(得分:0)
您可以创建两个表。
一个包含类别,一个包含子类别,并在查询中建立它们之间的关系。
示例强>
我们有一个名为“category”的表,其中包含字段:id(int,primary key),name(varchar)
在此表中,我们有一行id = 1,name = oven
我们有一个名为“subcategories”的第二个表,其中包含字段:id(int,primary key),name(varchar),category(int)
在此表中,我们有一行id = 1,name = microwave,category = 1
然后,您可以执行以下查询:
SELECT category.name as catname, subcategories.name as subcatname FROM category, subcategories WHERE category.id = subcategories.id AND subcategories.name LIKE '%crowav%';
这将返回以下内容:
catname: oven
subcatname: microwave