>source

현재 자동 완성 기능을 위해 solr 제안 컴포넌트를 사용하고 있습니다. 이제 사용자 권한과 내가 사이트의 어떤 영역에 따라 사용자에게 다른 제안을 제공하고 싶습니다. 이제 사전을 만들기 위해 특정 명시 적 항목 만 고려하는 것이 쉽게 가능하다고 가정했습니다 (예 : dict1은 type = t1 및 locale = en 인 항목, dict 2 인 경우 type = t1 및 locale = de, dict3 인 경우에만 작성 됨) = t2 and locale = en 등 ...). 그러나 나는 그런 일을 할 곳을 알 수 없습니다. 시스템이 solr 4.6을 실행 중입니다.

어떤 해결책을 알고 있거나 가능한 해결책이 있습니까?

현재 시스템에서 solr을 업데이트하거나 문서가 solr 구성과 별도로 색인되는 방식을 변경할 수 없으므로 불행히도 컨텍스트 필터링을 사용할 수 없습니다. 다른 방법이 없다면 마지막 수단 일 것입니다.

  • 답변 # 1

    컨텍스트 필터링이나 여러 사전이없는 오래된Solr 4.6을 사용하고 있으므로 각 항목에 대해 SearchComponent (일명 SearchComponent)를 지정해야합니다

    <searchComponent class="solr.SpellCheckComponent" name="suggest-en">
       <lst name="spellchecker">
    -->
    <!--
    <str name="name">suggest</str>
    <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
    <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
    <str name="field">name</str>  <!-- the indexed field to derive suggestions from
    <float name="threshold">0.005</float>
    <str name="buildOnCommit">true</str>
    <str name="sourceLocation">american-english</str>
    --> </lst>
    </searchComponent>
    
    

    다음과 같이 요청 핸들러를 정의하십시오 :

    <requestHandler class="org.apache.solr.handler.component.SearchHandler"
    name="/suggest-en">
       <lst name="defaults">
          <str name="spellcheck">true</str>
          <str name="spellcheck.dictionary">suggest-en</str>
          <str name="spellcheck.onlyMorePopular">true</str>
          <str name="spellcheck.count">5</str>
          <str name="spellcheck.collate">true</str>
       </lst>
       <arr name="components">
          <str>suggest</str>
       </arr>
    </requestHandler>
    
    

    여기서 해결 방법은 suggest-en 를 지정해야한다는 것입니다. suggest-de 및 다른 모든 유형의 요청 처리기 및 나중에 클라이언트가 올바른 요청 처리기에 대한 프로필에 따라 다릅니다.

  • 이전 sql server - sqldependency를 사용하지 않고 테이블 데이터를 업데이트 할 때 저장 프로 시저를 사용하여 C # 메서드에서 호출 트리거를 얻는 방법
  • 다음 shell - 파일의 패턴에 관한 값을 증가시킵니다