Php 改进全文搜索MYSQL

Php 改进全文搜索MYSQL,php,mysql,full-text-search,Php,Mysql,Full Text Search,我有一个基于搜索引擎的网站,目前处于测试模式。该站点有一个包含以下字段的作业表(作业公司、作业标题、作业描述、作业位置)。除作为文本字段的描述外,所有字段均为Var。所有字段都作为全文索引 我目前的做法是根据标题、地点和公司进行搜索。这似乎很好,但我想通过添加描述字段来改进搜索结果。但问题是,当我添加描述字段时,搜索似乎需要更长的时间。即使是一个只包含12000行的表,速度似乎也很慢 我使用以下匹配查询来选择结果 MATCH(job_posts.job_title, job_company) A

我有一个基于搜索引擎的网站,目前处于测试模式。该站点有一个包含以下字段的作业表(作业公司、作业标题、作业描述、作业位置)。除作为文本字段的描述外,所有字段均为Var。所有字段都作为全文索引

我目前的做法是根据标题、地点和公司进行搜索。这似乎很好,但我想通过添加描述字段来改进搜索结果。但问题是,当我添加描述字段时,搜索似乎需要更长的时间。即使是一个只包含12000行的表,速度似乎也很慢

我使用以下匹配查询来选择结果

MATCH(job_posts.job_title, job_company) AGAINST('".$this->mysqli_escape($job_title)."' IN BOOLEAN MODE) 

有人对如何提高搜索性能有什么看法吗?

嗯,我的第一个想法是从“外部”来解决这个问题:使用多个不同字段的搜索表单是否可以接受?如果您希望有4个搜索字符串,每个字符串在不同的列中进行搜索,我想这本身会减少负载。例如:

当有人在“location”字段中键入内容时,您将向查询中添加一个子句,该子句仅与location字段中的搜索文本相匹配

当有人在“description”字段中键入内容时,您将向查询中添加一个子句,该子句将搜索文本与description字段相匹配。否则,您不会与描述字段匹配任何内容


如果您不需要在一个位置输入文本并搜索“所有可能的字段”,此解决方案将防止额外的缓慢,直到有人特别想要在描述文本中搜索。因此,查询速度根据搜索者的需要而变化。

您有一个覆盖这些字段的全文索引,还是有多个覆盖部分字段的全文索引?此外,在布尔模式下有比
更多的选项。
我使用PHPMYADMIN,并为每个字段分别设置一个全文索引。有一个索引来涵盖所有这些是不是更好?我想我知道你的意思。此时,当前有2个表单字段,如果搜索位置,它将只搜索位置字段。如果描述字段完整,它将搜索其他字段。是。但是我理解了您上面引用的SQL代码片段,
MATCH(job_posts.job_title,job_company)与({$string}在布尔模式下)
,这意味着您输入的字符串将同时与列出的所有字段进行比较。在许多情况下,这是必要的,如果不这样做,搜索就没有意义;但如果默认情况下总是搜索所有字段,则性能将受到影响。