0

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

我在这里使用的查询是 $title = $item=>title; $desc = $item->描述;SELECT cidFROM tbl_keywordWHERE MATCH( keyword) 反对 ('".$title." ".$desc."' 在布尔模式下);

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

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

表看起来像

id cid 关键字
1 6 智能手机
2 6 iphone
3 7 智能手表

当我得到一个标题为“智能手机不是必需品”时,查询应该只返回 cid 6。

如何实现它。?

4

1 回答 1

0

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

有两种方法可以做到这一点:

1.* (推荐) *您可以用空格(“Smart”、“Phone”、“are”、“not”、“essential”)来打断句子,然后应用以下查询

select * from tbl_keyword where 关键字如“%smart%”或关键字如“%phones%”或关键字如“%are%”或关键字如“%not%”或关键字如“%essential%”

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


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

像这样将句子分解成单个单词(“Smart”、“Phones”、“are”、“not”、“essential”)

然后用这样的两个词(“Smart Phones”、“Phone are”、“are not”、“not essential”、“essential Smart”、“Smart are”、“Smart not”、“Phone not”来打破这句话)

并使用这两者从数据库中检索条目(此过程只会缩小过滤器的范围)

select * from tbl_keyword where (关键字如“%smart%”或关键字如“%phone%”或关键字如“%are%”或关键字如“%not%”或关键字如“%essential%”)和(关键字如“%smart devices%”或关键字如“%phones are%”或关键字如“%are not%”或关键字如“%not essentials%”或关键字如“%essentials smart%”)

希望对你有帮助 ...

于 2014-01-28T09:03:28.883 回答