2011-09-02 4 views
3

내 모델에이 코드가 있습니다.Sunspot on Rails에서 적중 점수를 계산하는 공식은 무엇입니까?

class Facility < ActiveRecord::Base 
... 
searchable do 
    text :name 
    text :facility_type do 
end 
... 

그리고 검색 컨트롤러에 다음과 같이 입력합니다.

 @search = Facility.search do 
    keywords(query) do 
     boost_fields :name => 1.9, 
        :facility_type => 1.98 
    end 
    ... 

그리고 두 개의 Facility 개체가 있습니다. 먼저 "cafe"유형이 있지만 아직 가지고 있지 않습니다. 이름에 단어 "카페", 예를 들어 "카페 햇"이라고하는 두 번째 이름이 있지만 실제로는 "바"유형입니다.

query = "cafe"로 검색을 실행하고 응답에서 두 가지 기능을 모두 얻었지만 "cafe sun"의 경우 5.003391이고 실제 "cafe"의 경우 1.250491입니다.

두 번째 시도에서는

"cafe sun"에 대한 점수는 바뀌지 않지만 "cafe"는 약간 자랐습니다 - 1.8946824

결과가 점수별로 정렬되어있는 한, 어떻게 생각합니까? 계산?

아니면 나는 잘못된 tokenizers 또는 뭔가를 선택하고, 여기에 내가 schema.xml

<fieldType name="text" class="solr.TextField" omitNorms="false"> 
    <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.EdgeNGramFilterFactory" 
      minGramSize="3" 
      maxGramSize="30"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

답변

2

채점 결과는 루씬 라이브러리의 도메인이이며, 그 알고리즘의 핵심은 여기에 자세히 설명되어 있습니다 :

원시 점수 데이터를 조사하려면 Solr 인스턴스에 대해 직접 쿼리를 실행하고 debugQuery=on 매개 변수를 추가하여 점수 데이터를 확인하십시오.

http://localhost:8983/solr/select?q=test&defType=dismax&qf=name_text+facility_type_text&debugQuery=on 

SOLR 일반 관련성 최적화의 경우, SolrRelevancyFAQ를 참조 할 수 있습니다. 또한 구체적으로 시연하는 한 가지 질문이 있습니다. the output of debugQuery

전혀 : 아주 깊은 질문에 아주 좋은 질문을합니다. 나는 주제 아래 펼칠 길 아래로 나의 응답을 편집 할 수있다.

관련 문제