在java应用程序中使用lucene索引

发布于 2024-12-10 13:34:17 字数 212 浏览 1 评论 0原文

最近我开始研究 solr。我已经在 solr 中创建了索引,我想通过我的 java 应用程序对其进行查询。我不想在我的应用程序中使用 solr.war。我如何通过 solrj api 或 lucene java api 使用它?我的想法是在项目上下文中添加这些索引并使用它。我浏览了一些示例/教程,但没有找到任何有关如何使用已创建的索引的信息。请告诉我一个正确的解决方案,或者任何指定解决方案的链接将不胜感激。

Recently i stared working on solr. I have created index in solr and i want to query on it through my java application. I don't want to use solr.war in my application. How can i use it through solrj api or lucene java api? My thinking is to add those index in project context and use it. I gone through some examples/tutorials but did not find any on how to work with already created index. Please tell me a proper solution for it or any link specifying the solution will be appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

酷遇一生 2024-12-17 13:34:17

您可以使用 Lucene api 来创建/更新和搜索索引。
由于solr是基于lucene的,所以底层索引就是lucene索引。
Lucene 将类公开为 IndexWriter 和 IndexSearcher,这将帮助您与索引进行交互。

搜索 solr/lucene 索引的示例 -

Directory index = FSDirectory.open(new File("/path/to/index")); 
IndexSearcher searcher = new IndexSearcher(index, true);
TopScoreDocCollector collector = TopScoreDocCollector.create(10, true);
searcher.search(q, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;

应该能够找到这方面的示例。

You can use Lucene apis to create/update and search on an index.
As solr is based on lucene, the underlying index is the lucene index.
Lucene exposes classes as IndexWriter and IndexSearcher, which would help you interact with index.

Example for searching over an solr/lucene index -

Directory index = FSDirectory.open(new File("/path/to/index")); 
IndexSearcher searcher = new IndexSearcher(index, true);
TopScoreDocCollector collector = TopScoreDocCollector.create(10, true);
searcher.search(q, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;

Should be able to find examples on this.

青衫儰鉨ミ守葔 2024-12-17 13:34:17

是的,您可以将 Solr 创建的索引与 Lucene 一起使用,这没有什么特别的,因为 Solr 本身使用 Lucene。因此所有 Lucene 文档均保持不变。

或者,如果您不想使用 Solr 作为服务器,您可以在 Java 中嵌入使用它应用。

Yes, you can use a Solr-created index with Lucene, there's nothing particular about it because Solr itself uses Lucene. So all Lucene documentation applies unchanged.

Or if you don't want to use Solr as a server you can use it embedded in your Java application.

清醇 2024-12-17 13:34:17

我是这样弄的..

String realPath = request.getRealPath("/");
        StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT);
        Directory index = FSDirectory.open(new File(realPath+"/index"));
        IndexSearcher indexSearcher = new IndexSearcher(index, true);
        TopScoreDocCollector collector = TopScoreDocCollector.create(2000, true);

        QueryParser query = new QueryParser(Version.LUCENE_CURRENT, "name", analyzer);
        Query q = null;
        try {
            q = query.parse("*:*");
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        indexSearcher.search(q, collector);
        ScoreDoc[] scoreDoc = collector.topDocs().scoreDocs;

I made it this way..

String realPath = request.getRealPath("/");
        StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT);
        Directory index = FSDirectory.open(new File(realPath+"/index"));
        IndexSearcher indexSearcher = new IndexSearcher(index, true);
        TopScoreDocCollector collector = TopScoreDocCollector.create(2000, true);

        QueryParser query = new QueryParser(Version.LUCENE_CURRENT, "name", analyzer);
        Query q = null;
        try {
            q = query.parse("*:*");
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        indexSearcher.search(q, collector);
        ScoreDoc[] scoreDoc = collector.topDocs().scoreDocs;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文