我正在做一个使用XML提要获取输入的项目。我必须过滤与特定关键字匹配的标题和描述的项目。如果一个项目在标题或描述中包含智能手机,我必须将该项目添加到数据库中的“智能手机”类别下。
我在这里使用的查询是$title = $item=>title;$desc = $item->description;SELECT cid FROM tbl_keyword WHERE MATCH(keyword) cid ('".$title.“”.$desc.“在布尔模式下);
查询返回值,但它从数据库中获取其他行,如智能手表、智能玩具。
我想知道,如何包含基于空间的搜索。查询必须与关键字完全匹配。
表看起来像这样
id:*关键字
1/6英寸智能手机
年2月6日的iphone
3月份至7月份:智能手表
当我得到一个标题“智能手机不是必需的”时,查询应该只返回CID6。
如何实现它?
发布于 2014-01-28 17:03:29
据我所知,你不能仅仅根据数据库搜索整个句子(智能手机不是必需的)才能得到准确的结果。
有两种方法可以做到这一点:
1.*(推荐)*您只需使用空格("Smart","Phone","are","not",“essential”)断开句子,然后应用以下查询
select * from tbl_keyword where where关键字"%smart%“或关键字”%PHONS%“或关键字"%are%”或关键字"%not%“或关键字"%essential%"
此查询将从数据库中输出可能条目的列表。因此,您需要使用您的编程语言将结果与查询语句进行比较。
2.这种方式将直接从数据库输出条目(但在最坏的情况下,这可能会排除一些重要的条目)。
将句子分解成像这样的单个单词("Smart","Phones","are","not","essential")
然后用两个词来打破这句话(“智能手机”,“手机是”,“不是”,“非必要”,“基本智能”,“智能是”,“智能不是”,“手机不是”)
并使用这两种方法从数据库中检索条目(此过程只会缩小过滤器的范围)
select * from tbl_keyword where (关键字"%smart%“或关键字”%PHON%“或关键字"%are%”或关键字"%not%“或关键字"%essential%") and (关键字"%smart %”或关键字“%phone Ares%”或关键字"%are not%“或关键字"%not essentials%”或关键字"%essentials smart%")
希望这能对你有所帮助。
https://stackoverflow.com/questions/21398028
复制相似问题