2013-04-11 2 views
1

Lucene을 사용하여 소스 코드의 색인을 생성하고 싶습니다. 소스 코드는 이미 컴파일러 플러그인을 사용하여 사전 분석되었습니다. 컴파일러의 출력은 소스 코드에 나타나는 ID 목록입니다. 각 ID는 ID가 (: COL 라인 : 즉 광고 COL)를 표시Lucene을 사용하여 소스 코드의 색인을 생성 할 수 있습니까?

  • (에 사용 반대) ID에 정의 된 모듈에 대한 정보
  • 소스 범위를 포함하고,
  • 이 ID가이 위치에 정의되어 있는지 또는 여기에 사용 된 ID인지를 나타냅니다. (의사 코드)이 소스 코드 모듈 여기

    module MyModule 
    from MyOtherModule import bar 
    foo = ... 
    print bar 
    

    주어진 예를 들어

는 컴파일러가 MyModule를 출력 컴파일 할 수있는 경우에 무엇 : 모든 ID를 표시하는 방법을

MyModule.foo,3:1-3:3,definition 
MyOtherModule.bar,4:7-4:9,use 

주 은 출처에서 그런 식으로 나타나지 않을 수도 있지만 정규화 된 것입니다. 이것이 우리가 컴파일러를 사용하는 이유이며, 순수한 텍스트 기반 검색보다 더 정확한 코드 검색을 수행 할 수 있습니다.

질문 질문 : 위의 컴파일러 출력을 메타 데이터 (즉, 정규화 된 ID 및 ID가 지정된 위치에서 정의되었거나 사용되었는지 여부)에 따라 인덱싱하는 사용자 지정 토큰 라이저 및 분석기를 작성할 수 있습니까? 문서를 채점 할 때 사용할 수 있습니까?

정확하게 말하면 각 용어를 정의 된 모듈과 연관시켜야합니다 (예 : foo은 연관된 메타 데이터 : 정의 모듈 = MyModule). 게시 목록의 각 게시에 ID의 특정 모양이 해당 ID의 정의 또는 사용인지 여부를 저장하도록합니다.

또한 Lucene에 정규화 된 ID의 동의어로 정규화되지 않은 ID를 저장하도록하고 싶습니다. 이렇게하면 사용자가 "foo"를 검색하고 "Module1.foo"및 "Module2.foo"ID가 포함 된 모든 문서를 검색 할 수 있습니다. 반환

parse module:MyModule use:yes 

는 '해석'이 아니라 사용 된 '인 MyModule'에서 '해석'에 조회수 :

+0

이미 맞춤 속성을 보았습니까? – mschonaker

답변

2

그것은처럼 조회 할 수 있도록 루씬 필드에 다양한 속성을 넣어 아마 쉽게 정의 된 것보다.

관련 문제