What if you were to automatically generate keywords? You could take the article text, run it through an automatic summary generator, filter out really common words from the resulting summary (I, you, he, him, they, your, we, a, an, the, and, or, that, his, my, her, et cetera, et cetera), and then index whatever's left as a set of keywords for the article. Add any user-defined keywords that don't already appear in the automatically generated list, and you ought to wind up with a fairly extensive index of articles. Allow Boolean searches of the keyword-index, and you should get something that's very much like a full-text search, and nearly as powerful, except that you don't actually have to parse the full article during a search to do it - you just have to parse it once, during the summary generation. It wouldn't be a 100% solution (summarizers can require a fair amount of tweaking, and they're not absolutely perfect in any case), but it strikes me as a valid possibility...
I don't know that much about database programs in general, and less about Perl in particular, but I wouldn't be surprised if that capability was built in (or readily available in library functions or add ons). I don't see any reason to make such an index visible, however, even if it still produced matches in association with keyword searches. I like the idea of keeping keywords that users consciously select separate.
How about a "add more keywords" button on the article post page? The user could supply his own keywords (or not) and then click the button. The function would then create a page listing suggested keywords that could be added with a check box (like with the topics list). Or maybe this "add more keywords" page should come up after the user clicks the post button, in which case it might be called "add/review keywords".
The suggested keywords could be generated from a combination of the following: