Php 连接两个表以进行全文搜索

Php 连接两个表以进行全文搜索,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有两个表格:配方和标签,用于CodeIgniter应用程序中的全文搜索。对于每1个食谱,它们都是无限数量的标签(标签的一些示例:tasty、chicken、晚餐) recipes表中的示例行: 食谱Id:1…..食谱名称:莫氏鸡肉晚餐。。。。。 食谱编号:2…..食谱名称:莫氏龙虾浓汤。。。。。 标记表中的示例行: 对应的配方Id:1…..标签:Tasty。。。。。 对应的配方Id:2…..标签:海鲜。。。。。 我希望能够搜索龙虾,并在搜索中显示与“龙虾”名称匹配的食谱。但我也想搜索“海鲜”,

我有两个表格:配方和标签,用于CodeIgniter应用程序中的全文搜索。对于每1个食谱,它们都是无限数量的标签(标签的一些示例:tasty、chicken、晚餐)

recipes表中的示例行:

食谱Id:1…..食谱名称:莫氏鸡肉晚餐。。。。。 食谱编号:2…..食谱名称:莫氏龙虾浓汤。。。。。 标记表中的示例行:

对应的配方Id:1…..标签:Tasty。。。。。 对应的配方Id:2…..标签:海鲜。。。。。 我希望能够搜索龙虾,并在搜索中显示与“龙虾”名称匹配的食谱。但我也想搜索“海鲜”,并有相应的食谱标签显示出来

下面是我的代码(在添加join语句之前,它用于一个表的全文搜索):

输入此项后,我得到错误:

Error Number: 1210

Incorrect arguments to MATCH

SELECT recipes.name,recipes.durationtotal FROM recipes LEFT JOIN tags ON recipes.id = tags.recipes_id WHERE MATCH (recipes.name,tags.tag) AGAINST ('f') > 0 AND user_id = 1 ORDER BY recipes.name ASC

Filename: search_model.php

Line Number: 15
第15行是:
$query=$this->db->query($sql,array($terms,$terms))


谢谢你的帮助

如果搜索中涉及的所有表都不是MyISAM,并且您还没有在要搜索的特定列集上设置全文索引,那么匹配查询将失败。我认为,由于您要搜索不同表中的列,因此无法创建跨两个表的全文索引。您可以在布尔模式下尝试:

MATCH (recipes.name,tags.tag) AGAINST (? IN BOOLEAN MODE)

布尔模式比标准全文匹配稍微宽容一些

@dethron5000,谢谢回复,但还是收到了同样的问题。有什么想法吗?你可能无法进行跨表全文搜索-我会检查MySQL文档。您可能需要将查询重构为两个查询的并集,对这两个键进行全文搜索。您可能还想看看SOLR之类的东西,尽管这是一个需要实现的好工作。
MATCH (recipes.name,tags.tag) AGAINST (? IN BOOLEAN MODE)