我有一个mysql数据库表(CommonWordsTable),它包含多个记录:
"word-A" - "words related to word-A"
例如:
columnA - columnB
chair - furniture;table;office-chair;dining-chair;wooden chair;metal chair
我目前正在使用mysql全文匹配查询来匹配这些单词的句子:
select columnA,
max(match(columnA, columnB) against ('" + sentence + "')) as relevance
from CommonWordsTable
where match(columnA, columnB) against ('" + sentence + "')
group by columnA
order by relevance desc limit 5;
我正在使用另一个查询来从RareWordsTable表中获取句子匹配单词(具有相同的结构),并将这些单词与CommonWordsTable匹配:
select columnA
from CommonWordsTable
where match(columnA, columnB) against(
(select concat(colA, ' ' , colB)
from RareWordsTable
where match(colA) against ('" + sentence + "') limit 1)
)
limit 3;
第一个查询大约需要50ms或更长时间,第二个查询大约需要100ms或更长时间。
我在columnA和columnB上使用联合全文索引,在colA上使用全文索引。我也在缓存中加载这些索引。
有没有办法让这些查询运行得更快?
我尝试在CPU /内存较高的机器上运行这些,但这并没有太大区别 我也尝试过使用Sphinx;它运行得更快,但不会产生相同的质量结果。