2014-04-07 9 views
1

최대 절전 모드 검색에서 소리 나는 검색의 힘을 사용하고 싶습니다. 정확히 일치하는 항목이 검색 결과의 상단에 순위가 매겨지지 않는 것이 문제입니다. 예. "존"에 대한 검색이 resultlist 반환음성 검색 결과의 순위

  • 존을
  • JONE
  • 내가 '존'최고

    I에 상장 될 것으로 예상했을 것이다

다음과 같이 내 분석기를 정의했습니다.

@AnalyzerDef(name = "phonetic", 
    tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class), 
    filters = { 
      @TokenFilterDef(factory = StandardFilterFactory.class), 
      @TokenFilterDef(factory = PhoneticFilterFactory.class, params = { 
       @Parameter(name = "encoder", value = "DoubleMetaphone"), 
       @Parameter(name = "inject", value = "true") 
      }) 
    }) 
@Analyzer(definition = "phonetic") 
public class User{ 
    @Field(index=Index.TOKENIZED, store=Store.YES) 
    private String firstname; 

    @Field(index=Index.TOKENIZED, store=Store.YES) 
    private String lastname; 
} 
,451,515,

검색이 코드를 사용하여 수행됩니다

String[] fields = new String[] { "firstname", "lastname" }; 
      MultiFieldQueryParser parser = new MultiFieldQueryParser(fields, 
        sf.getAnalyzer("phonetic")); 

당신이 나에게 어떤 힌트/도움을 줄 수 있다면 그것은 좋은 것입니다,이 순위 yould을 달성 할 방법에 대해 설명합니다. Google을 통해 무언가를 찾으려고했는데, 이것은 구현 된 것임을 알게되었습니다. 음성 확장 검색을 사용하여 음성 검색 결과보다 정확히 일치하는 항목을 늘리십시오 ... 나를 도와 주셔서 대단히 감사드립니다. 나는 두 정확히 소리 나는 기반 분석의 관점에서 동일 SOLR 1.3

브롬, 쉐인

답변

0

사용자가 지정한대로 쿼리가 작동합니다. PhoneticFilterinject=true을 지정 했으므로 정확하게 일치하는 항목 (즉, 메타 폰 일치 항목과 일반 텍스트 일치 항목)에 더 많은 용어 일치 항목을 가져와야하며, 이는 내 테스트에 관한 한 곰곰이 생각할 수 있습니다.

내가보기에 문제는 정확한 일치를 검색 할 때 대/소문자를 구분하여 분석해야한다는 것입니다. "John"을 색인하고 "john"을 검색하면 음 성 일치가 제대로 작동하지만 대소 문자를 구분하므로 정확한 일치를 놓치게됩니다.

필터 체인에 LowercaseFilter을 추가하기 만하면 해결됩니다.내가 좋아하는, 직접 PhoneticFilter 이상을 추가하는 것이 좋습니다 것입니다 :

filters = { 
     @TokenFilterDef(factory = StandardFilterFactory.class), 
     @TokenFilterDef(factory = LowerCaseFilterFactory.class), 
     @TokenFilterDef(factory = PhoneticFilterFactory.class, params = { 
      @Parameter(name = "encoder", value = "DoubleMetaphone"), 
      @Parameter(name = "inject", value = "true") 
     }) 
} 

PhoneticFilterFactory 위의 위치뿐만 아니라 규칙을 다음과 대문자 metaphones를 유지뿐만 아니라 메타 폰 코드와 일반 텍스트가 일치하지 않습니다 보장 서로. 그것이 우려가되는 어떤 경우라도 생각할 수는 없지만 어쨌든 좋을 것 같습니다.

0

과 함께 최대 절전 모드 검색 3.1을 사용하고 있습니다. 최대 절전 모드 검색은 여러 개의 분석기를 정의 할 수 있으며 복수 양식 주석 @Fields을 사용하여 동일한 특성을 여러 번 색인화 할 수 있습니다.

의이 firstname_phonetic 이름과 firstname_standard, 당신이 각을 대상으로 두 개의 쿼리 인스턴스를 생성 할 수있는 두 분야에서 당신이 인덱스 FIRSTNAME을 가정 해 봅시다, 그리고 SHOULD 절과 함께 BooleanQuery를 사용하여 두 개의 쿼리를 결합합니다. 이렇게하면 점수 기록자가 두 점수의 점수를 합산하여 정확한 일치가 높은 점수를 얻게됩니다.

0

답변을 주셔서 감사합니다. 이제는 "femtoRgon"의 주석 순서를 사용하고 쿼리를 표준과 결합 할 때 @Fields (기본값 및 소리 나는대로)를 사용하여 여러 분석기를 정의했습니다. 다른 부팅 값을 사용하여

브롬, 쉐인

모든 도움을 하라구요 표준에 대한 자세한 2.0f 부팅)