2017-09-12 8 views
2

나는 Lucene에 약간의 어려움을 겪었으며 어떤 도움을 주셔서 감사합니다.Lucene Standard Analyzer에서 특수 문자를 제거하는 방법

QueryParser.Parse를 사용하여 수동으로 작성하고 구문 분석 한 (이 쿼리) 사용자 지정 쿼리가 있습니다. LUCENE_29 버전과 StandardAnalyzer를 사용하고 있습니다. 내 쿼리에서

나는 특수 문자 (콜론)이 있고 유지하기 위해 필요합니다

+(Name:"test\:word" OR Business:"test\:word hello") 

위의 쿼리 텍스트를 구문 분석 한 후 출력은 다음과 같습니다

+(Name:"test word" OR Business:"test word hello") 

는 사람이 어떤 제안이 있습니까 , 나는 비어있는 stop words 콜렉션을 StandardAnalyzer 생성자에 전달하려고 시도했지만 콜론을 제거하는 효과는 없다.

감사합니다.

+1

좋은 질문이 있습니다. Lucene과 비슷한 문제가있어서이 문제를 해결할 방법이 없습니다. Lucene은이 문제로 인해 우리 웹 사이트에서 부분적으로 은퇴했습니다. – JohnH

+0

@JohnH이 정보를 공유해 주셔서 감사합니다! –

+0

FYI -'LUCENE_29'는 사용자가 설정 한 버전 호환성 만 알려주며 사용중인 lucene 또는 lucene.net 버전을 알려주지 않습니다. – NightOwl888

답변

1

수 없습니다. StandardAnalyzer는 특수 문자를 제거하도록 특별히 설계되었습니다.

대답은 특수 문자 (예 : WhiteSpaceAnalyzer)를 제거하거나 필요에 맞게 기존 토큰 화기 및 필터를 기반으로 맞춤 분석기를 작성하는 Analyzer 구현을 사용하는 것입니다. 당신이 그 특수 문자 WhiteSpaceAnalyzer 인덱스 에 데이터를 사용해야합니다

주, 그렇지 않은 경우는 쿼리시에 사용할 수 없습니다.

+0

안녕하세요, WhiteSpaceAnalyer를 사용했으며 query.parse를 사용할 때 결과가 다음과 같습니다. + (이름 : 테스트 : 단어 이름 : "test : word hello") -이 쿼리는 작동하지만 WhiteSpaceAnalyzer가 스트립하는 이유를 모르겠습니다. 이름 필드의 따옴표는 비즈니스 필드에 남겨 둡니다. 어떤 아이디어? –

+0

색인 시간 중에'WhiteSpaceAnalyzer'를 사용 했습니까? 분석 된 데이터는 특수 문자로 색인에 작성해야하며, 그렇지 않으면 조회시 사용할 수 없습니다. – NightOwl888