2012-03-19 1 views
0

저는 현재 Rails 프로젝트에서 Sunspot을 통해 Solr을 구현하고 있습니다.Sunspot : 검색 결과 계층을 구현하는 방법?

이가 내 말은, 내가 검색 결과의 계층 구조를 구현하는 것이 방법을 볼 돈`t 문서를 보면 :

  • 쿼리 & 일치하는 모든 사용자가 가 먼저 표시해야 프로필 사진이있다.

  • &과 일치하는 모든 사용자는 프로필 사진이 없습니다. 아래에 이 표시되어야합니다.

  • 등등 ....

이러한 시스템을 구현하는 방법에 대한 지침이나 참고 자료를 제공합니다.

+0

SOLR과 Lucene은 "일치"하는 바이너리 방식이 아니라 관련성 점수 (0과 1 사이)를 제공한다는 점에 유의하십시오. 따라서 관련성이 낮은 "히트"가 프로필 사진의 존재로 인해 관련성이 높은 것보다 훨씬 높게 표시되면 예기치 않은 결과가 사용자의 관점에서 발생할 수 있습니다. 예 : 검색어 "john maynard smith"는 "John M Smith"와 관련성이 높지만 관련성은 "Jason Smith"와 일치하지만 Jason Smith가 사진이있는 경우 결과 목록에 더 많이 표시됩니다. 이것은 내 생각에 나쁜 유용성이 될 것입니다. – nickdos

+0

도움이 될 수 있습니다. http://stackoverflow.com/a/9726365/604511 – aitchnyu

답변

0

먼저 프로필 사진을 사용자에게 표시 할이 아니라 나중에 할 것들 경우 -
당신이 sortMissingLast으로 정렬 사용할 수 있습니다, 이것은 마지막 표시하는 값이없는 모든 레코드의 원인이됩니다.
다른 경우 값이없는 레코드의 기본값이 있으므로 정렬 할 때 마지막으로 표시됩니다.

0

나는이 요청을 여러 해에 걸쳐 여러 번 들었다. 사람들이 기대하는 것처럼 작동하지 않는다. 최악의 경우의 행동은 꽤 나쁘고 꽤 ​​흔합니다.

정확하게하고 싶지 않을 수도 있습니다. "주니어 (Jr)"와 같은 공통 용어를 포함하자마자 그림이없는 첫 번째 프로필 앞에 수천 개의 결과가 표시되어야합니다.

일반 이름이 잘 보편화되어 있기 때문에 예상보다 자주 발생하므로 쿼리에 많이 표시되어 많은 문서와 일치합니다. 이는 가장 일반적인 검색어에 대해 발생할 수 있습니다. 죄송합니다.

대신 품질 계수를 사용하여 결과를 높이십시오. 두 개의 "Joe Smith"프로파일이있는 경우, 그림이있는 프로파일이 더 좋으며 먼저 표시되어야합니다. edismax 결과 핸들러의 "boost"매개 변수를 사용하여이를 수행 할 수 있습니다. 프로필에 사진이있는 경우 2의 부스트를 사용하고 그렇지 않으면 1의 부스트를 사용합니다. 원하는 값을 얻으려면 정확한 값으로 플레이해야 할 수 있습니다.