Я бы хотел проиндексировать и найти фрагменты данных, которые проиндексированы с помощью Lucene.
Например, элементы и их цвет
Item 1 - Black
Item 2 - Yellow
Item 3 - Red
Примеры поиска
Поисковое слово - Item
Item 1 - Black
Item 2 - Yellow
Item 3 - Red
Поисковое слово - Item 1
Item 1 - Black
Поисковое слово - Item 2 - Yellow
Item 2 - Yellow
Возможное решение
Из того, что я нашел в ответе на this , очевидно, я могу добавить их в поле, используя этот формат.
// {Item 1}|{Black}
document.add(new StringField("item", MessageFormat.format("'{'{0}'}'|'{'{1}'}'", itemName, itemColour, Field.Store.YES));
Если я сейчас выполню поиск по данным в этом формате, я не получу результатов.
Я использую StandardAnalyzer
.
Вот как я создаю запрос.
QueryParser queryParser = new QueryParser("item", analyzer);
queryParser.setAllowLeadingWildcard(true);
Query query = queryParser.parse(keyword);
Я хочу найти:
- Все предметы, которые имеют совпадающее имя
- Все предметы, которые совпадают и имеют определенный цвет
Каков наилучший метод решения этой проблемы?