2012-08-03 2 views
1

Lucene 기반 프로그램에서 소스 코드 파일을 인덱싱하는 경우 Lucene의 StandardTokenizer은 점을 포함하는 단어를 분리하지 않습니다. foo.bar. 이 문제는 소스 코드에서 점이 종종 메서드 호출에 사용된다는 것을 의미합니다.이 경우 객체 이름과 메서드 이름을 구분해야합니다.일반 소스 코드 용 Lucene 토큰 화 도구

내 질문은 일반적인 프로그래밍 언어 (예 : 특정 프로그래밍 언어 없음)와 함께 잘 작동하는 사용자 정의 Tokenizer을 작성하려면 어떻게해야합니까? 기존 구현이 있습니까?

답변

4

Lucene으로 색인 소스 코드에 대한 this article on onjava.com을 확인하실 수 있습니다. 몇 년 전이지만 지침으로 활용할 수 있습니다. tokenizer와 관련하여 그들은 당신이 원하는 것을 수행하는 LowerCaseTokenizer를 사용합니다.

2

StandardTokenizer의 문법 (JFlex)을 점으로 분리하여 변경하고 사용자 지정 Tokenizer를 생성 할 수 있습니다. 이것이 제가 Generating a custom Tokenizer for new TokenStream API using JFlex/ Java CC에서 한 것입니다.

또는

당신은뿐만 아니라 점에 분할하는 TokenFilter을 가지고 StandardTokenizer 중 사용자 정의 분석이 새로운 TokenFilter를 만들 수 있습니다. (StandardAnalyzer가하는 일을 보시고이 새로운 TokenFilter를 삽입하십시오.)