2016-08-24 2 views
0

안녕하세요 Lucene 검색에서 일관된 결과를 반환하지 않는 문제가 있습니다. 인덱싱 StandardAnalyzer으로 수행되며 루씬 버전은 데이터베이스에 3.0대시가있는 Lucene 검색이 일관된 결과를 반환하지 않음

예 항목이 나는 전체 문자열을 검색 할 경우 어떤 결과를 반환하지 않습니다

A1BC-1-12345678 - AU-01/123456 - No.1 ABC DEFG XX-YYY Example Data 

입니다.

내가 단일 대시와 슬래시를 취할 경우 어떤 결과를 반환하지 않습니다

A1BC-1-12345678 AU-01 123456 No.1 ABC DEFG XX-YYY Example Data 

를 들어, 검색 할 수 있습니다. 내가 공백을 XX-YYY 사이의 대시를 교체 할 경우

, 그 결과를 반환 --------

A1BC-1-12345678 AU-01 123456 No.1 ABC DEFG XX YYY Example Data 

검색! -------------

A1BC-1-12345678 - AU-01/123456 - No.1 ABC DEFG XX YYY Example Data 

그것은 어떤 결과를 반환하지 않습니다에 대한 ---------

지금 내가 대시를 포함 슬래시 및 공백을 XX-YYY 사이의 대시를 교체 할 경우, 검색 할 수 있습니다.

A1BC-1-12345678 AU 01 123456 No.1 ABC DEFG XX YYY Example Data 

이 어떤 결과를 반환하지 않습니다에 대한

내가 공백을 모두 AU-01과 XX-YYY 사이의 대시를 교체 마지막 경우, 검색 할 수 있습니다.

결론적으로 "XX-YYY"는 유효하지 않지만 "AU-01"은 유효하지만 "XX YYY"는 유효하며 "AU 01"은 유효하지 않으므로 문제가있는 것 같습니다.

이 문제를 해결하려면 어떻게해야합니까?

+0

어떻게 검색하나요? 대부분 분석과 관련이 있지만 세부 정보 나 코드없이 문제가 무엇인지 말하기는 어렵습니다. – femtoRgon

답변

0

내가 루씬의 의사에 따라, 나는이에 대한 답을 가지고 생각의 StandardAnalyzer는 StandardTokenizer을 사용하며,이 인덱스를 기반으로 : 구두점을 제거하는 문장 부호 문자에서

  • 분할 단어. 그러나 공백이없는 점은 토큰의 부분 으로 간주됩니다.
  • 토큰에 숫자가없는 경우 하이픈 (-)으로 단어를 분할합니다.이 경우 전체 토큰은 제품 숫자로 해석되며 분할되지 않으며 분할되지 않습니다.

소문자 필터가있는 WhitespaceAnalyzer가 내 필요에 맞을 것이라고 생각합니다.

관련 문제