2017-09-08 3 views
0

내 응용 프로그램에서 검색에 사용 된 문서를 저장하는 데 SOLR을 사용하고 있습니다. SOLR은 여러 응용 프로그램에서 공유하며 데이터는 각 응용 프로그램마다 고유 한 응용 프로그램 ID를 기준으로 그룹화됩니다.SOLR IDF 최대 문서 구성

TF-IDF를 기준으로 점수를 계산할 때 SOLR은 사용할 수있는 전체 문서를 사용합니다. 응용 프로그램의 모든 문서를 세는 대신 응용 프로그램 ID에 사용할 수있는 총 문서 수만을 기준으로 IDF를 확인하도록 구성을 어떻게 변경합니까?

답변

1

하나의 컬렉션에 저장하면 기본 제공 기능으로는 불가능합니다.

여러 가지 선택 사항이 있습니다. 각 응용 프로그램 데이터를 별도의 컬렉션에 저장하는 것이 좋습니다. IDF는 기본 제공되는 응용 프로그램 데이터에만 기반한 것입니다.

이 당신을 위해 적합하지 않은 경우 - 당신은 아마 https://lucene.apache.org/core/6_6_0/core/org/apache/lucene/search/similarities/TFIDFSimilarity.html 및 재정의 방법

전체 IDF

을 계산하기위한 책임이 public abstract float idf(long docFreq, long docCount)을 exteding에 의해, 자신의 유사성을 작성해야합니다, 나는 첫 번째 방법은 사용자의 요구에 맞게 생각 훨씬 낫다.

2

모든 문서를 하나의 컬렉션에 저장하더라도 여전히 할 수있는 일이 있습니다!

이처럼 solrconfig.xml에 ExactStatsCache 가능하지 않는 :

<statsCache class="org.apache.solr.search.stats.ExactStatsCache"/> 

유사성 계산을하지 전체 컬렉션을 당 파편 당됩니다.

문서를 application_id로 나누면 원하는 '가까운'점수를 얻을 수 있습니다. 샤드 당 application_id가 하나만있는 경우 정확하게 을 원하지만, 많은 샤드가 아니라 많은 샤프트가있는 샤드 당 하나 이상의 응용 프로그램을 얻을 수 있습니다..