2016-05-13 32 views
0

ファイルの500個のコピーを作成し、Lucene Apacheにすべてインデックスを作成しました。私はそれらを "0.txt"、 "1.txt"、 "2.txt" ... "499.txt"のように付けました。Lucene Apacheのみが10個のファイルを見つけよう

public class Searcher { 
IndexSearcher indexSearcher; 
QueryParser queryParser; 
Query query; 

@SuppressWarnings("deprecation") 
public Searcher(String indexDirectoryPath) throws IOException { 
    Directory indexDirectory = FSDirectory 
      .open(new File(indexDirectoryPath)); 
    indexSearcher = new IndexSearcher(indexDirectory); 
    queryParser = new QueryParser(Version.LUCENE_36, 
      LuceneConstants.CONTENTS, new StandardAnalyzer(
        Version.LUCENE_36)); 
} 

public TopDocs search(String searchQuery) throws IOException, 
     ParseException { 
    query = queryParser.parse(QueryParser.escape(searchQuery)); 
    return indexSearcher.search(query, LuceneConstants.MAX_SEARCH); 
} 

public Document getDocument(ScoreDoc scoreDoc) 
     throws CorruptIndexException, IOException { 
    return indexSearcher.doc(scoreDoc.doc); 
} 

public void close() throws IOException { 
    indexSearcher.close(); 
}} 
:これは私のサーチャーである

public class Indexer { 

private IndexWriter writer; 

public Indexer(String indexDirectoryPath) throws IOException { 
    new File(indexDirectoryPath).mkdirs(); 
    Directory indexDirectory = FSDirectory.open(new File(indexDirectoryPath)); 
    StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_36); 
    IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_36, analyzer); 
    writer = new IndexWriter(indexDirectory, config); 
} 

public void close() throws CorruptIndexException, IOException { 
    writer.close(); 
} 

private Document getDocument(File file) throws IOException { 
    Document document = new Document(); 
    Field contentField = new Field(LuceneConstants.CONTENTS, new FileReader(file)); 
    Field fileNameField = new Field(LuceneConstants.FILE_NAME, file.getName(), Field.Store.YES, 
      Field.Index.NOT_ANALYZED); 
    Field filePathField = new Field(LuceneConstants.FILE_PATH, file.getCanonicalPath(), Field.Store.YES, 
      Field.Index.NOT_ANALYZED); 
    document.add(contentField); 
    document.add(fileNameField); 
    document.add(filePathField); 
    return document; 
} 

public void indexFile(File file) throws IOException { 
    Document document = getDocument(file); 
    writer.addDocument(document); 
}} 

:私はそれが499

に0を返すことになったが、それは0から9のファイルを返す特定の単語を検索するとこれが私のインデクサです

これは私がそれを呼んでいる方法です:

Indexer indexer = new Indexer(DIR_INDEX); 
      for (int i = 0; i < 500; i++) { 
       indexer.indexFile(new File("files/" + i + ".txt")); 
      } 
      indexer.close(); 
      Searcher searcher = new Searcher(DIR_INDEX); 
      TopDocs hits = searcher.search("Saude"); 
      for (ScoreDoc scoreDoc : hits.scoreDocs) { 
       org.apache.lucene.document.Document doc = searcher.getDocument(scoreDoc); 
       System.out.println(doc.get(LuceneConstants.FILE_PATH)); 
      } 
      searcher.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

答えて

0

あなたが

を呼び出します
indexSearcher.search(query, LuceneConstants.MAX_SEARCH); 

第2パラメータは返されるヒットの最大数です。その値を確認してください。おそらく10です。

+0

それです。私はこの愚かな間違いのために謝罪し、悲しいことに私はあなたをアップアップすることはできません。 –