Это очень напоминает список экземпляров модели Django ORM.
, Почему не сортируют их на запросе как это:
ut = Tag.objects.order_by('-count')
Основываясь на ваших пояснениях, я хочу разделить ваш вопрос на два и ответить на каждый по очереди:
1 относительно просто - используйте StandardToeknizer , чтобы создать токен, объединяющий апостроф и s с предыдущим словом, затем StandardFilter , чтобы удалить апостроф и s. Это преобразует Moody's в Moody. StandardAnalyzer делает это и многое другое (строчные буквы и удаление стоп-слов), что может быть больше, чем вам нужно. Использование стеммера должно привести как Moodys , так и Moody к одному и тому же токену. Попробуйте для этого SnowBallFilter .
2 сложнее: PrefixQuery Lucene, на который ссылался Алан, будет работать только тогда, когда название компании является первым словом в поле. Вам нужно что-то вроде ответа на этот вопрос об автозаполнении в Lucene .
StandardAnalyser должен работать для 3 и 4, но не будет работать для 1 и 2.
Без написания собственного (сложного) текстового анализатора я бы подумал о том, как вы ожидаете, что будут искать названия компаний. Например, основной синтаксис поиска lucene означает, что вы можете найти "Moody's", если будете искать с использованием подстановочных знаков: "Moo *" и "Mood *". Следовательно, вы можете захотеть добавить «*» к поисковому запросу перед отправкой в lucene, однако это может вызвать некоторую путаницу, если пользователь не знает об этом добавлении подстановочного знака под капотом.