3
在我的Neo4j應用程序中,我有一個Product
實體,其中有一個name
和description
字段。這兩個字段都用於Lucene的傳統索引。在Neo4j上使用html標記在富文本上進行全文搜索
Product.name
是一個簡單的文本,這裏沒有問題,但Product.description
可以包含HTML標記和元素。
現在爲我的索引我用StandardAnalyzer(Version.LUCENE_36)
。我應該使用什麼分析器來跳過所有HTML元素?
如何判斷Neo4J Lucene索引是否在Product.description中不使用任何HTML元素?我只想索引單詞。
更新:
我發現以下HTMLStripCharFilter
類,並重新實現我的分析如下:
public final class StandardAnalyzerV36 extends Analyzer {
private Analyzer analyzer;
public StandardAnalyzerV36() {
analyzer = new StandardAnalyzer(Version.LUCENE_36);
}
public StandardAnalyzerV36(Set<?> stopWords) {
analyzer = new StandardAnalyzer(Version.LUCENE_36, stopWords);
}
@Override
public final TokenStream tokenStream(String fieldName, Reader reader) {
return analyzer.tokenStream(fieldName, new HTMLStripCharFilter(CharReader.get(reader)));
}
@Override
public final TokenStream reusableTokenStream(String fieldName, Reader reader) throws IOException {
return analyzer.reusableTokenStream(fieldName, reader);
}
}
也是我添加了一個新的Maven dependecy我的Neo4j項目:
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers</artifactId>
<version>3.6.2</version>
</dependency>
現在一切正常,但我不確定方法
@Override
public final TokenStream tokenStream(String fieldName, Reader reader) {
return analyzer.tokenStream(fieldName, new HTMLStripCharFilter(CharReader.get(reader)));
}
是HTMLStripCharFilter
初始化的適當位置。
如果我錯了,請糾正我。