2017-11-14 2 views
0

키워드의 위치에 따라 검색어의 결과를 정렬하려면 어떻게해야합니까?키워드 별 관련성

나는 단지 내가

  1. SOLR 검색 쿼리 티티
  2. 티티 테스트 tilte
  3. 토토 티티 타타
  4. 이 필드 라벨

    에 검색을 시작합니다

이 주문을 되려면 어떤 매개 변수를 사용해야합니까?

  1. 티티 테스트 tilte
  2. 토토 티티 타타
  3. SOLR 검색 쿼리 티티 내가 연결을위한 드루팔을 사용하고 SOLR에 질의를 보내

.

+0

; 당신은 할 수 없습니다. 용어의 위치는 득점에 사용되지 않습니다 (구문 검색 제외). 이를 위해 커스텀 함수 나 스코어러를 작성해야 할 것입니다. "쉬운"방법은 lucidworks의 [페이로드 튜토리얼] (https://lucidworks.com/2009/08/05/getting-started-with-payloads/)을 따르는 것입니다. lucidworks는 각 용어에 첨부 된 페이로드를 사용하여 순위를 지정합니다 그 용어의 중요성. 페이로드를 건너 뛰고 직접 위치를 사용할 수도 있습니다. – MatsLindh

+0

@MatsLindh 지정하는 것을 잊어 버렸습니다. 레이블 필드에서만 검색을 실행했습니다. –

+0

어떻게 변경 될지 잘 모르겠습니다. – MatsLindh

답변

0

도메인이 매우 많이 포함되어 있고 복사 필드 및 dismax 쿼리 구문 분석기에서 원하는 것과 비슷한 것을 얻을 수있는 레이블의 크기를 알고있는 경우. 는 특히이 방법으로 N "copyfields"을 만들 수 :

<field name="label" type="text_general" indexed="true" stored="true"/> 
 
<field name="label_3" type="text_first_3" indexed="true" stored="true"/> 
 
<field name="label_5" type="text_first_5" indexed="true" stored="true"/> 
 
... 
 
<fieldType name="text_first_3" class="solr.TextField" positionIncrementGap="100"> 
 
     <analyzer type="index"> 
 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
 
      <filter class="solr.LimitTokenPositionFilterFactory"    maxTokenPosition="3" consumeAllTokens="false" /> 
 
</analyzer> 
 
     <analyzer type="query"> 
 
      <tokenizer class="solr.StandardTokenizerFactory"/> 
 
     </analyzer> 
 
    </fieldType> 
 

 
<fieldType name="text_first_5" class="solr.TextField" positionIncrementGap="100"> 
 
     <analyzer type="index"> 
 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
 
      <filter class="solr.LimitTokenPositionFilterFactory"    maxTokenPosition="5" consumeAllTokens="false" /> 
 
</analyzer> 
 
     <analyzer type="query"> 
 
      <tokenizer class="solr.StandardTokenizerFactory"/> 
 
     </analyzer> 
 
    </fieldType> 
 
... 
 
<copyField source="label" dest="label_3"/> 
 
<copyField source="label" dest="label_5"/>

이 제한 토큰 위치 필터 덕분에 작동한다 [1]. 그런 다음 당신은 edismax과 다른 향상을 지정할 수 있습니다

QF = "label_3^5 label_5^2 라벨"

문제도 여기서 논의 [2].

대체 접근법이 여기에 언급되어 있습니다 [3].

[1] https://lucene.apache.org/solr/guide/6_6/filter-descriptions.html#FilterDescriptions-LimitTokenPositionFilter

[2] https://issues.apache.org/jira/browse/SOLR-3925

[3] 제가 아는 Solr - How to boost score for early matches?