2016-08-06 4 views
0

단순화 된 예입니다. 두 필드가 있습니다 : titlekeywords. 제목 + 키워드^2solf의 qf가 특정 필드에 부스트를 제공하지 않습니다.

이전에는 작동 된 미세 : 나는 다음과 같은 매개 변수

QF와 edismax 사용하고 있습니다. 나는 약 15M 레코드가 solr에 색인되어 있습니다. 모든 레코드는 title입니다. 대부분의 레코드 HAD 비어 있지 않은 keywords.

하지만 최근에는 대부분의 레코드에서 keywords을 삭제하기로 결정했습니다. 결과적으로 현재 비어 있지 않은 keywords이있는 레코드 (15M 레코드 중 1 레코드) 만 있습니다.

불행하게도 qf에 지정된 keywords^2 부스트가 더 이상 작동하지 않는 것 같습니다. 그 기록에 대한

, 우리는, 말하자면, " 좋은 가게"및 keywords, 말, " 바지 옷"을 title 있습니다. 이제 ' 좋은 상점 바지'을 검색하면 qf: title 또는 qf: title keywords^2.5을 사용하는지 여부에 관계없이 solr 일치 점수가 정확히 동일합니다. (다시 말하지만, 이전의 비교에서 solr matching score가 다르기 때문에 대부분의 레코드가 비어 있지 않은 키워드를 가지고있을 때 이전에 작동했다고 생각합니다.)

+0

두 필드의 정의는 무엇입니까? 그리고 당신은'debugQuery'의 출력에서 ​​필드 안타를 보았습니까? – MatsLindh

+0

둘 다'text_general'로 정의되어 있습니다. 그리고 debugQuery에서 볼 수 있습니다 : ex.'DisjunctionMaxQuery ((키워드 : good)^3.0 | title : good))'. 그리고'keywords' 필드에서 일치를 예상하고있는 레코드에 대해서는'good'이 반환 된 결과에 표시된 것처럼 키워드 필드에 있다는 것을 알고 있습니다. – user2868104

답변

0

내 질문에 답해주십시오. keywords이 비어 있지 않은 레코드가 하나뿐이기 때문에. solr에서 사용한 IDF 공식에 따라 기본 값은 1보다 작습니다. 따라서^2로 올리는 것은 전혀 도움이되지 않습니다. 그래서 "해결책"은 비어 있지 않은 키워드로 더 많은 레코드를 추가하는 것입니다. 물론 이것은 실제 해결책이 아닙니다.

debugQuery에서 출력하는 방법은 다음을 참조하십시오.

0.84748024 = weight(keywords:good in 4161) [], result of: 
    0.84748024 = score(doc=4161,freq=1.0 = termFreq=1.0 
    ), product of: 
     3.0 = boost 
     0.2876821 = idf(docFreq=1, docCount=1) 
     0.9819638 = tfNorm, computed from: 
     1.0 = termFreq=1.0 
     1.2 = parameter k1 
     0.75 = parameter b 
     5.0 = avgFieldLength 
     5.2244897 = fieldLength