Я думаю, что лучшее, на что вы можете надеяться, - это простая поисковая система: разбейте вопрос на слова и запишите слова против вопроса в rdbms, например:
Таблица вопросов (id, текст, ....)
Табличные слова (вопрос_ид, слово)
Затем, чтобы получить вопросы, похожие на новый вопрос с идентификатором $ x:
SELECT prev.id, prev.text, count(*) AS common_words
FROM questions prev, words prev_words, words curr_words
WHERE curr_words.question_id=$x
AND curr_words.word=prev_words.word
AND prev_words.question_id=prev.id
GROUP BY id, text
ORDER BY COUNT(*) DESC
LIMIT.....?
Вы, конечно, можете применить более сложные методы сравнения к возвращенному шорт-листу, но это, безусловно, должен быть первый шаг.
С