Это может быть довольно сложный вопрос, но моя проблема в том, что у меня есть сервлет Spring, который используется для поиска в реальном времени. Мне нужно удалить анализатор Lucene, чтобы он работал в автономном режиме и вызывался сервлетом каждый раз, когда к нему поступал запрос, вместо того, чтобы иметь анализатор в сервлете. Тем не менее, я не совсем знаю, как это сделать, и вызвать службу анализатора из сервлета. Кто-нибудь может указать мне правильное направление?
На данный момент у меня есть это:
RAMDirectory ramDirectory = new RAMDirectory();
StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_31);
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_31, analyzer);
IndexWriter indexWriter = new IndexWriter(ramDirectory, config);
Document document = new Document();
// TEST DATA
document.add(new Field("firstName", "John", Field.Store.YES, Field.Index.ANALYZED));
document.add(new Field("occupation", "Engineer", Field.Store.YES, Field.Index.ANALYZED));
document.add(new Field("firstName", "Mary", Field.Store.YES, Field.Index.ANALYZED));
document.add(new Field("occupation", "Field Engineer", Field.Store.YES, Field.Index.ANALYZED));
document.add(new Field("firstName", "Jamie", Field.Store.YES, Field.Index.ANALYZED));
document.add(new Field("occupation", "Primary teacher", Field.Store.YES, Field.Index.ANALYZED));
// END TEST DATA
indexWriter.addDocument(document);
indexWriter.optimize();
indexWriter.close();
IndexSearcher indexSearcher = new IndexSearcher(ramDirectory);
String[] fields = {"firstName", "occupation"};
MultiFieldQueryParser parser = new MultiFieldQueryParser(null, fields, analyzer);
Query query = parser.parse(searchQuery);
// Parsing of results here
Спасибо.