首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要从servlet脱机运行Lucene Analyzer

需要从servlet脱机运行Lucene Analyzer
EN

Stack Overflow用户
提问于 2011-04-12 15:08:27
回答 1查看 316关注 0票数 0

这可能是一个相当丰富的问题,但我的问题是我有一个用于实时搜索的Spring servlet。我需要去掉Lucene分析器,以便它离线运行,并在每次遇到查询时由servlet调用,而不是将分析器放在servlet中。但是,我不知道如何做到这一点,也不知道如何从servlet调用分析器服务。有谁能给我指个方向吗?

目前,我有这样的想法:

代码语言:javascript
复制
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

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-12 21:34:39

为什么你觉得你现在的设计在性能方面很差?你到底遇到了什么问题?

我相信您正在寻找的是某种形式的进程间通信。出现在脑海中的两个选项是:

Lucene

  • Synchronous:将处理卸载到另一个服务器(HTTP或普通的TCP),该服务器封装Lucene并响应查询结果。这对于扩展你的系统很有用,因为它可以让你很容易地将Lucene分离到另一台机器上,但除此之外,没有立即的性能gains.

  • Asynchronous:将它卸载到一个队列(例如ZeroMQ),其他进程监听它,运行Lucene,然后通过其他队列返回结果。如果您需要响应另一端的用户,这就不那么有利了,而且在任何情况下都很难用java servlet实现(不过,如果有人知道这一点,我很想知道)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5631596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档