Использование запроса Lucene для проверки соответствия документа

#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.