2012-05-23 6 views
1

나는복수 워드의 동의어

car accessories, gadi marmat 

다음과 같은 내용으로 synonyms.txt 파일이하고 자동차 액세서리에 확대 될 수 있도록 나는 하나의 토큰으로 자동차 액세서리를를 인덱싱하고 및 gadi marmat.

내가 전체 동의어 쿼리 가디의 marmat을 위해, 자동차 액세서리와 레코드가 반환 될 때 너무 일치합니다.

가디 marmat,이 확장됩니다 에 가디, 가디 marmatmarmat를 검색 할 때 그래서 내가 쿼리를 확장 싱글 필터 공장을 사용하고

는 가디 marmat는 다음과 같이 쿼리 때문에 단일 토큰, 자동차 부속품과 일치해야하며 결과가 반환되지 않지만이 경우는 아니지만 자동차 액세서리을 검색하면 결과를 반환합니다. 따라서 여러 단어가있는 동의어를 색인화하는 것이 중요합니다.

좋습니다.

+0

메모와 같은 분석 요소를 혼합하여 좋은 결과를 얻을 수 있습니다 : true로 설정되어 확장합니다. – zdesam

+0

'/ admin/analysis.jsp'를 사용하여 토큰 확장이 예상대로 작동하는지 확인해 보았습니까? – beerbajay

답변

3

동의어 파일은 검색하는 단어를 변경하는 용도로만 사용됩니다. 당신은 쓰기 그렇다면

자동차 액세서리 => 가디 marmat

"자동차 부속품"에 컴파일러 일치, 그것은 "가디 marmat"

는 단일 토큰

같은 작품에 일치하려고

당신은 그

@AnalyzerDef(name = "integram", 
tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class), 
filters = { 
    @TokenFilterDef(factory = LowerCaseFilterFactory.class), 
    @TokenFilterDef(factory = StopFilterFactory.class, params = { 
     @Parameter(name = "words", value = "lucene/dictionary/stopwords.txt"), 
     @Parameter(name = "ignoreCase", value = "true"), 
     @Parameter(name = "enablePositionIncrements", value = "true") 
    }), 
    @TokenFilterDef(factory = SnowballPorterFilterFactory.class, params = { 
      @Parameter(name = "language", value = "English") 
    }), 
    @TokenFilterDef(factory = SynonymFilterFactory.class, params = { 
     @Parameter(name = "synonyms", value = "lucene/dictionary/synonyms.txt"), 
     @Parameter(name = "expand", value = "false") 
    }), 
    @TokenFilterDef(factory = SnowballPorterFilterFactory.class, params = { 
      @Parameter(name = "language", value = "English") 
    }) 
}) 
+0

org.hibernate.search.exception.SearchException : HSEARCH000114 : 'lucene/dictionary/synonyms.txt'리소스를로드 할 수 없습니다. 동의어 또는 불용어를로드 할 수 없습니다. 이 파일들을 다운로드해야합니까? Maven에서이 기능을 제공 할 것이라고 생각했습니다. – jDub9