【发布时间】:2018-07-17 08:37:53
【问题描述】:
我想索引 HTML 文件,并在收到我的搜索结果后能够跳转到相应的标题。
我目前使用 HTMLStripCharFilter 来解析我的文件。
public class MyAnalyzer extends Analyzer {
public MyAnalyzer() {
super();
}
@Override
protected Reader initReader(String fieldName, Reader reader) {
return new HTMLStripCharFilter(reader);
}
@Override
protected TokenStreamComponents createComponents(String fieldName) {
StandardTokenizer source = new StandardTokenizer();
TokenStream result = new StandardFilter(source);
result = new LowerCaseFilter(result);
return new TokenStreamComponents(source, result);
}
}
indexMyFile 方法获取一个 HTML 文件的路径并创建索引,但它目前只存储文件名。
private static void indexMyFile(IndexWriter writer, Path file,
long lastModified) throws IOException {
try (InputStream stream = Files.newInputStream(file)) {
Document doc = new Document();
Field pathField = new StringField("path", file.toString(),
Field.Store.YES);
doc.add(pathField);
doc.add(new TextField("contents", new BufferedReader(
new InputStreamReader(stream, StandardCharsets.UTF_8))));
writer.addDocument(doc);
}
我的解决方案是在这个 Lucene 文档中添加一个新的 TextField,但我目前不知道代码的这一点的标题。 有没有办法使用 Lucene,所以我可以将内容链接到当前的标题和文件名?还是我必须使用 JSoup 或 JTidy 并将我的 indexMyFile 方法传递给标题后面的文本并为每个标题创建一个 Lucene 文档,类似于this post?
【问题讨论】: