можно ли оптимизировать / изменить эти полнотекстовые запросы mysql для более быстрой работы? - PullRequest
0 голосов
/ 04 июня 2011

У меня есть таблица базы данных 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;

Первый запрос занимает около 50 мс или более, а второй - около 100 мс или более.
Я использую объединенный полнотекстовый индекс для columnA и columnB и полнотекстовый индекс для colA.Я также загружаю эти индексы в кеш.

Есть ли способ заставить эти запросы работать быстрее?

Я пробовал запускать их на машинах с более высокой загрузкой процессора / памяти, но это не имело большого значения.
Я также пытался использовать Sphinx;он работает быстрее, но не дает таких же качественных результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...