我正在开发一个项目,我使用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.
如何实施。?
答案 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%“)< /强>
希望这会对你有帮助......