Lucene으로 Wikipedia 마크 업을 구문 분석하려고 시도한 결과이 작은 프로젝트를 찾았습니다.
(적절한 웹 사이트를 검색 할 수 없습니다. 죄송합니다)
다음은이 라이브러리를 순환하는 코드 예제의 짧은 버전입니다. 실행할 때 null이 아닌 WikipediaTokenizer가 발생하지만 incrementToken ()을 실행하자마자 null 포인터 예외가 발생합니다. 어떤 아이디어?
import org.apache.log4j.Logger;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.wikipedia.WikipediaTokenizer;
import java.io.StringReader;
public class WikipediaTokenizerTest {
static Logger logger = Logger.getLogger(WikipediaTokenizerTest.class);
protected static final String LINK_PHRASES = "click [[link here again]] click [http://lucene.apache.org here again] [[Category:a b c d]]";
public WikipediaTokenizer testSimple() throws Exception {
String text = "This is a [[Category:foo]]";
return new WikipediaTokenizer(new StringReader(text));
}
public static void main(String[] args){
WikipediaTokenizerTest wtt = new WikipediaTokenizerTest();
try {
WikipediaTokenizer x = wtt.testSimple();
logger.info(x.hasAttributes());
while (x.incrementToken() == true) {
logger.info("Token found!");
}
} catch(Exception e){
logger.error("Exception while tokenizing Wiki Text: " + e.getMessage());
}
}
Maven (pom.xml)에 다음 종속성을 사용합니다.
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>4.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-common</artifactId>
<version>4.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>4.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-wikipedia</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers</artifactId>
<version>3.1.0</version>
</dependency>
어떤 도움을 주시면 감사하겠습니다! 누군가가 더 나은 라이브러리 또는 솔루션을 가지고 있다면 알려주십시오.
lucene 버전을 믹스 앤 매치 할 수 없습니다. 버전 4.2.1을 사용하고 있습니다. 버전 3.1.0 또는 3.0.3과 호환되지 않습니다. 이러한 종속성을 제거해야합니다.
WikipediaTokenizer
분석기 공통에 포함됩니다.
또한에서 요구하는 계약을 이행하지 않습니다 TokenStream
. TokenStream API의 워크 플로우가 설명 된 TokenStream
문서를 참조하십시오 . 특히를 호출하기 전에를 호출 incrementToken()
해야합니다 reset()
. 당신은 정말도해야 end()
하고 close()
그것.
WikipediaTokenizer x = wtt.testSimple();
logger.info(x.hasAttributes());
x.reset();
while (x.incrementToken() == true) {
logger.info("Token found!");
}
x.end();
x.close();
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다