2

特定のプレフィックスで始まる Lucene インデックス内のすべての単語のリストを取得したいと考えています。インデックス内の用語を照会する方法を探していましたが (用語が必要です。用語の元のドキュメントは気にしません)、成功しませんでした。何か案は?

4

1 に答える 1

6

とった!FilteredTermEnumサブクラス ( FuzzyTermEnumRegexTermEnumWildcardTermEnum) はまさに私が必要とすることを行います。

簡単な例を次に示します。

FSDirectory dir = FSDirectory.open(new File("index"));
IndexWriter writer = new IndexWriter(dir, new WhitespaceAnalyzer(),
    true, new IndexWriter.MaxFieldLength(20));
IndexReader reader = IndexReader.open(dir);

Document doc = new Document();
doc.add(new Field(
    "text",
    "Life #consists not in #holding good cards, but in playing those you hold well.",
    Field.Store.NO, Field.Index.ANALYZED));
writer.addDocument(doc);
writer.close();

WildcardTermEnum tagsEnum = new WildcardTermEnum(reader, new Term("text", "#*"));
do {
    System.out.println(tagsEnum.term());
} while (tagsEnum.next());
于 2010-05-25T08:01:58.210 に答える