MySQL FTS实现

时间:2010-07-20 12:15:10

标签: mysql full-text-search

我在PHP / MySQL的票务系统上工作。 我们在布尔模式下实现了mysql FTS,为用户提供搜索功能。 用户输入搜索字符串,我们向她提供问题列表。

以下是示例数据库架构:

问题表 - ( ID 标题说明
它有fts索引(标题,描述)

issue_comments表 - ( id issue_id 评论
它有fts索引(评论)

每个问题都可以有多个评论。 因此,issue_comments表中可以有多行与问题表

中的行相对应

假设用户输入搜索字符串 - alpha beta

php脚本会在单个单词中断开字符串,在每个单词之前附加“ + ”符号并执行以下查询。

select id as issue_id from issues where match(title, description) against ('+alpha +beta' in      boolean mode)   
    union  
select id as issue_id from issues inner join issue_comments on        issue.id=issue_comments.issue_id where match(comment) against ('+alpha +beta' in boolean mode)

搜索所有问题 在(标题,描述)中有alpha和beta 或者在问题的一个评论中同时包含alpha和beta。

但这种设置有局限性 如果问题标题中存在alpha并且其评论中存在beta,我想在搜索结果中出现问题。以上设置无法做到这一点 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

我还没有在现实生活中尝试过这个,但是指定多列也应该在布尔模式下工作:

match (title,comment) against...

没有明确提及此问题,但docs讨论了搜索的,而不是列。