У меня были проблемы с JavaMail (он не может разобрать некоторые сообщения электронной почты, которые он должен).
У меня были намного лучшие результаты с Mime4J .
Я думаю, что FREETEXT - это то, что вы ищете.
Вот хорошее сравнение двух вариантов:
Если вы используете CONTAINS, WHERE оказывается сложным, поэтому вы не можете напрямую передать то, что ваши пользователи ввели в вашу форму поиска:
WHERE CONTAINS(notes, 'FORMSOF(INFLECTIONAL, recipe) or FORMSOF(INFLECTIONAL, cuisine)')
Но если вы используете FREETEXT, вы прямо укажите «форму поиска» в where:
WHERE FREETEXT(notes, 'recipe for cake sugar')
Я бы сказал, что CONTAINS полезен, если вы хотите искать что-то там, где ваша программа создает запрос, потому что это гораздо более мощно и у вас больше контроля. С другой стороны, FREETEXT полезен, когда вы хотите выполнить запрос "в стиле Google", который ваш пользователь указывает простым синтаксисом (просто словами), что искать.