Solr 데이터베이스의 각 문서에 대해 사용자 지정 "인기"점수를 할당합니다. 기본 맞춤 관련성 점수가 아닌이 맞춤 '점수'입력란을 사용하여 검색 결과를 정렬하길 원합니다.Solr에서 사용자 지정 점수로 정렬하면 일관되게 정렬되지 않음
먼저 내 점수 필드를 정의 :
<fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/>
<field name="score" type="sint" stored="true" multiValued="false" />
은 그럼 각 문서의 점수를 삽입 인덱스를 다시. 내가 이런 걸 사용, 쿼리를 실행하려면 :
(text:hello)+_val_:"score"
가 지금은 문서가 다시 "점수"필드으로 분류 와서 기대를하지만, 내가 대신 얻을 것은 :
<doc>
<int name="score">566</int>
<str name="text">SF - You lost me at hello...</str>
</doc>
<doc>
<int name="score">41</int>
<str name="text">hello</str>
</doc>
<doc>
<int name="score">77</int>
<str name="text">
CAGE PAGE-SAY HELLO (MIKE GOLDEN's Life Is Bass Remix)-VIM
</str>
</doc>
<doc>
<int name="score">0</int>
<str name="text">Hello Hello Hello</str>
</doc>
점수가 566, 41, 77, 0 순서가 뒤떨어져 있음을 주목하십시오. 기이 한 점은 특정 쿼리에서이 방법 만 정렬한다는 것입니다. 나는 패턴이 무엇인지 모르겠지만, 지금까지는 "0"의 점수가 검색 결과로 돌아올 때만 잘못된 정렬을 볼 수있었습니다.
SortableIntField 대신 IntField를 시도했으며 쿼리 매개 변수로 "sort = score desc"를 사용하여 동작을 변경하지 않았습니다.
내가 뭔가 잘못하고 있거나 사용의 의미를 오해하고있는 것입니까 val : 검색어에 "score"가 있습니까?
편집 : "점수"필드의 이름을 "인기"로 변경하고 동일한 결과를 얻으려고했습니다.
죄송하지만, 필드의 이름을 'popularity'로 변경하고 색인을 다시 작성하여 동일한 결과를 얻었습니다. – cwick
또한 필드에 정렬을 허용하지 않으며 오류를 던질 수도있는 인덱싱 된 필드가 true로 표시되는 것을 보지 마십시오. – Jayendra
나는 indexed = "true"및 indexed = "false"를 사용하여 시도했지만 아무런 효과가 없었다. 나는 indexed = "false"라는 에러 메시지를 얻지 못했다. – cwick