2011-09-30 5 views
4

Solr에서는 특정 MoreLikeThis 요청 처리기를 사용할 필요없이 표준 (dismax) 쿼리에서 "More Like This"결과 집합을 제한/필터링 할 수 있는지 궁금합니다. 예를 들어, 저는 두 나라에 대한 문서가있는 Solr 색인을 가지고 있습니다. 원래 (dismax) 쿼리를 수행 할 때 필드 쿼리 연산자 (fq)를 사용하여 해당 국가에 대한 결과를 필터링합니다. 그러나 반환 된 MLT 결과는 양국 모두를위한 것입니다. 나는 mlt.fl = country라는 이름을 사용하여 "국가와 이름이 비슷한 더 많은 결과를 보여주십시오"라고 표시하려고 시도했지만 국가 기준 (또는 적어도 이름 매개 변수는 국가 매개 변수보다 중요합니다)을 따르지 않는 것으로 보입니다. .제약/필터 방법 자세히 Solr의 결과?

옵션이 있음을 나타내는 Solr 설명서를 찾지 못하는 것 같습니다. 그러나 Solr 전문가가 솔리드 전문가에게이 점에 대해 간소화하거나 해킹 할 수 있기를 바랍니다.

미리 감사드립니다.

+0

국가 필드의 fieldType은 무엇입니까? –

+0

country 필드의 fieldtype은 단지 문자열입니다. – cambo

답변

0

Solr mlt.fl은 이러한 필드를 기반으로 관련 문서를 찾아야합니다. 그러나 fq의 NOT clause처럼 그렇게 할 의무는 없습니다. 해결 방법은 fq param을 사용하여 국가를 제외하는 것입니다. 따라서 귀하의 mlt 쿼리는 다음과 같이 될 수 있습니다

/mlt?q=id:ID&fq=-country:COUNTRY&mlt.boost=true

ID : MLT를 계산해야하는 문서 ID입니다. COUNTRY (국가) : 제외하려는 국가입니다.

+1

감사합니다. 그러나 이것은 내가 MLT 요청 처리기를 피하기 위해 기대했던 것이 아닙니다. 그러나 문서를 더 자세히 읽은 후에는 불가능하다고 생각됩니다. Solr 문서 wiki에서 "MoreLikeThis에서 제공 한 유사한 결과를 필터링하려면 MoreLikeThisHandler를 사용해야합니다." (http://wiki.apache.org/solr/MoreLikeThis) – cambo

+0

참. MLTComponent는 더 많은 유연성을 제공하며 복잡한 상황에서 권장됩니다. –

관련 문제