根据数据库中的关键字搜索XML Feed的描述

时间:2014-01-28 05:59:14

标签: mysql match space against

我正在开发一个项目,我使用XML Feed来获取输入。我必须过滤与特定关键字匹配的标题和描述的项目。如果某个项目包含标题或说明中的智能手机,我必须在“智能手机”类别的数据库中添加该项目。

我在这里使用的查询是 $ title = $ item => title; $ desc = $ item-> description; SELECT cid FROM tbl_keyword WHERE MATCH(keyword)AGAINST('“。$ title。”“。$ desc。”'IN 布尔模式);

查询返回值,但它从智能手表,智能玩具等数据库中获取其他行。

我想知道,如何包含基于空间的搜索。 查询必须与确切的关键字匹配。

表看起来像

编号:CID关键字
1 6智能手机
2个6 iphone
3 7智能手表

当我得到“智能手机不是必需品”的标题时,查询应仅返回cid 6.

如何实施。?

1 个答案:

答案 0 :(得分:0)

据我所知,你不能只搜索整个句子(智能手机不是必需的)来对抗数据库以获得确切的结果。

有两种方法:

1。* (推荐) *你可以用空格(“智能”,“电话”,“是”,“不是”,“必要”)打破句子,然后应用以下查询

从tbl_keyword中选择*,其中关键字如“%smart%”或关键字如“%phone%”或关键字如“%is%”或关键字如“%not%”或关键字如“%essential%”

此查询将输出数据库中可能的条目列表。因此,您需要使用编程语言将结果与查询语句进行比较。


2.这种方式将直接从数据库输出条目(但在最坏的情况下,这可能会排除一些重要的条目)。

将句子分解为单个单词(“Smart”,“Phones”,“are”,“not”,“essential”)

然后用这两个词打破这句话(“智能手机”,“电话是”,“不是”,“不是必需的”,“必不可少的智能”,“聪明的人”,“智能不是”,“电话不是“)

并使用这两个来从数据库中检索条目(此过程将缩小过滤器范围)

从tbl_keyword中选择*,其中(关键字如“%smart%”或关键字如“%phone%”或关键字如“%are%”或关键字如“%not%”或关键字如“%essential%” “)和(关键字如”%智能手机%“或关键字如”%手机%“或关键字如”%不是%“或关键字如”%not essentials%“或关键字如”%essentials smart%“)< /强>

希望这会对你有帮助......