Lucene查询模糊查询

时间:2018-05-18 14:43:47

标签: java lucene

我想首先为我糟糕的英语道歉我是新来的,我不太了解查询文档,我索引了一些文档并制作了这个查询代码,但它无法正常工作

Term t = new Term("description", "history"); 
        Query q = new FuzzyQuery(t, 2); 
        int hitsPerPage = 100; 

        Path indexPath = Paths.get("C:\\Users\\Win 7\\Desktop\\projet_ri\\index");
        Directory directory = FSDirectory.open(indexPath);
        DirectoryReader reader = DirectoryReader.open(directory);
        IndexSearcher iSearcher = new IndexSearcher(reader);

        TopDocs topdocs = iSearcher.search(q, hitsPerPage);
        ScoreDoc[] resultsList = topdocs.scoreDocs; 
        System.out.println("Tab size: "+resultsList.length); // This prints Tab size: 0
        for(int i = 0; i<resultsList.length; i++){ 
            Document book = iSearcher.doc(resultsList[i].doc); 
            String description = book.getField("description").stringValue();
            System.out.println(description);
            }

程序甚至没有进入循环,我试图检查resultsList选项卡,它打印出大小为零 有人可以帮我纠正我的代码或给我一个查询示例代码吗?

1 个答案:

答案 0 :(得分:0)

您实际上错过了使用QueryParser进行查询。 此QueryParser需要与用于索引的分析器相同的分析器。这非常重要,否则结果集可能与您的预期不同。你的序列应该是这样的:

  1. 打开索引
  2. 创建IndexSearcher
  3. 使用索引使用的Analyzer
  4. 创建QueryParser
  5. 使用给定的搜索字词创建查询
  6. 使用QueryParser解析查询
  7. 搜索
  8. 关闭一切!
  9. 参见基本的lucene教程:https://www.tutorialspoint.com/lucene/lucene_search_operation.htm