【问题标题】:Use lucene index in java application在java应用程序中使用lucene索引
【发布时间】:2011-10-18 13:39:27
【问题描述】:

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

【问题讨论】:

    标签: lucene solr


    【解决方案1】:

    您可以使用 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;
    

    应该能找到这方面的例子。

    【讨论】:

    • 谢谢Jayendra先生,对我很有帮助。
    • 让我知道是否有办法直接获取 JSON 格式的查询结果。正如我们使用 &wt=json.
    【解决方案2】:

    是的,您可以将 Solr 创建的索引与 Lucene 一起使用,没有什么特别之处,因为 Solr 本身使用 Lucene。因此,所有 Lucene 文档均未更改。

    或者,如果您不想将 Solr 用作服务器,您可以在 Java 应用程序中使用它embedded

    【讨论】:

    • 谢谢。我使用了 lucene java api。
    【解决方案3】:

    我是这样弄的..

    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;
    

    【讨论】:

      猜你喜欢
      • 2017-08-20
      • 2021-12-11
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多