【问题标题】:MySQL Fulltext Search on Multi Tables多表上的 MySQL 全文搜索
【发布时间】:2011-04-12 15:41:00
【问题描述】:

我有 2 张桌子:

“产品信息”表: 身份证名称价格 =========================== 1 台 LG 显示器 $250 “product_detail_info”表: id product_info_id detail_title title_position 内容 ==================================================== ======================= 1 1 特点 2 bla bla bla 2 1 规格 1 bla bla bla

如何将两个表数据链接在一起以在 mysql 全文搜索中进行搜索,并将结果返回为“product_info”表上的产品名称?

谢谢。

【问题讨论】:

  • 我已将您的两个未注册帐户合并为一个。您现在可以编辑您的问题或将 cmets 留在单独的答案下。我会将您的“答案”转换为 cmets,但我不知道哪个是针对什么答案的。

标签: php mysql full-text-search search-engine


【解决方案1】:
SELECT
  pi.name
FROM
  product_info pi
  INNER JOIN product_detail_info pdi ON pdi.product_info_id = pi.id
WHERE
  pdi.content MATCH <your condition>

【讨论】:

    【解决方案2】:

    mysql 全文搜索功能将提供您想要的 - http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html。你只需要为它正确设置你的桌子。

    SELECT product_info.name FROM product_info 
    LEFT JOIN product_detail_info 
    ON product_info.id = product_detail_info.product_info_id
    WHERE MATCH ( content ) AGAINST ( your_search_string )
    

    【讨论】:

    • 非常感谢您的回复。但是如何为 2 个表编写匹配(内容)?我尝试如下编写它并返回错误:match (product_info.name, product_info.price, product_detail_info.detail_title, product_detail_info.content)
    • 通读我链接的文档,你需要在你想要MATCH的字段上创建一个FULLTEXT索引,然后才能查询它们,它只适用于CHAR, VARCHAR 或 TEXT 列。
    • 是的,我知道需要创建全文索引。但是如何在查询中为“匹配(内容)”编写?如果只有一张表,可以写成“MATCH(name, price)”。如何为 2 个表编写它?谢谢。
    猜你喜欢
    • 1970-01-01
    • 2010-11-10
    • 2013-02-15
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多