Я думаю, что вы должны сделать еще один шаг (при условии, что скорость не важна).
Из индекса Lucene вы должны построить еще один словарь, в котором каждое слово сопоставляется с небольшим объектом, который содержит единственный синоним, который имеет более высокую вероятность появления, значение и вероятность появления. Т.е., учитывая этот код:
class Synonym {
public:
String name;
double probability;
String meaning;
}
Map<String, Synonym> m = new HashMap<String, Synonym>();
... вам просто нужно заполнить его из индекса Lucene.