Если бы вы захотели создать что-то подобное с нуля, вы бы использовали что-то под названием TF / IDF: термин частота / обратная частота документа. Это означает, что, чтобы упростить его, вы находите в запросе слова, которые встречаются редко в корпусе в целом, и находите документы, содержащие эти слова.
Другими словами, если кто-то вводит запрос со словами «Я хочу купить слона», то из слов в запросе слово «слон», вероятно, является наименее распространенным словом в вашем корпусе. «Купить», вероятно, следующий. Таким образом, вы ранжируете документы (в вашем случае, предыдущие запросы) по тому, как много они содержат слово «слон», а затем как много они содержат слово «купить». Слова «я», «to» и «an», вероятно, находятся в стоп-листе, поэтому вы полностью их игнорируете. Вы ранжируете каждый документ (предыдущий запрос, в вашем случае) по количеству подходящих слов (взвешивание в соответствии с частотой обратного документа - то есть большим весом для необычных слов) и показывает верхние несколько.
Я упрощен, и вам нужно прочитать это, чтобы понять это правильно, но на самом деле это не так уж сложно реализовать простым способом. Страница Wikipedia может быть хорошим местом для начала:
http://en.wikipedia.org/wiki/Tf%E2%80%93idf