#java #lucene
#java #lucene
Вопрос:
Я использую запросы Lucene для проекта, подобного следующему:
Analyzer analyzer = new StandardAnalyzer();
QueryParser parser = new QueryParser("message", analyzer);
Query log = parser.parse("something OR name=mustafa");
Есть ли возможность использовать этот Query
объект с какой-либо картой или POJO, чтобы проверить, соответствует ли этот объект запросу? Я знаю, что это не предназначено для использования Lucene, и это работает IndexSearcher
, но это было бы полезно для меня.
Пример того, что я имею в виду:
Map<String,Object> a = {"message": "xx", "name": "mustafa"}
Map<String,Object> b = {"message": "xx", "name": "osman"}
SomeSearcher.matches(log, a) == true
SomeSearcher.matches(log, b) == false
Комментарии:
1. Вы хотите иметь индекс в памяти от текста до объектов Java? Или что означает ваш вопрос? Можете ли вы привести пример? Если да, то как вы создаете индекс Lucene для своих POJO?
2. Я имею в виду без создания индекса, поскольку этот запрос состоит из некоторых объектов, таких как BooelanQuery, TermQuery и т. Д. Можем ли мы протестировать их без фактического создания индекса.
Ответ №1:
На мой взгляд, вы можете использовать org.apache.lucene.store.RAMDirectory
Таким образом, ваше требование полностью протестировать из памяти удовлетворено, а также потребуется гораздо меньше изменений для перехода к реализации на диске после фазы POC.