|
@@ -33,91 +33,96 @@ func (criteria DummyScoringCriteria) Score(
|
|
|
func TestRankDocument(t *testing.T) {
|
|
func TestRankDocument(t *testing.T) {
|
|
|
var ranker Ranker
|
|
var ranker Ranker
|
|
|
ranker.Init()
|
|
ranker.Init()
|
|
|
- scoredDocs := ranker.Rank([]types.IndexedDocument{
|
|
|
|
|
|
|
+ ranker.AddDoc(1, DummyScoringFields{})
|
|
|
|
|
+ ranker.AddDoc(3, DummyScoringFields{})
|
|
|
|
|
+ ranker.AddDoc(4, DummyScoringFields{})
|
|
|
|
|
+
|
|
|
|
|
+ scoredDocs, _ := ranker.Rank([]types.IndexedDocument{
|
|
|
types.IndexedDocument{DocId: 1, BM25: 6},
|
|
types.IndexedDocument{DocId: 1, BM25: 6},
|
|
|
types.IndexedDocument{DocId: 3, BM25: 24},
|
|
types.IndexedDocument{DocId: 3, BM25: 24},
|
|
|
types.IndexedDocument{DocId: 4, BM25: 18},
|
|
types.IndexedDocument{DocId: 4, BM25: 18},
|
|
|
- }, types.RankOptions{ScoringCriteria: types.RankByBM25{}})
|
|
|
|
|
|
|
+ }, types.RankOptions{ScoringCriteria: types.RankByBM25{}}, false)
|
|
|
utils.Expect(t, "[3 [24000 ]] [4 [18000 ]] [1 [6000 ]] ", scoredDocsToString(scoredDocs))
|
|
utils.Expect(t, "[3 [24000 ]] [4 [18000 ]] [1 [6000 ]] ", scoredDocsToString(scoredDocs))
|
|
|
|
|
|
|
|
- scoredDocs = ranker.Rank([]types.IndexedDocument{
|
|
|
|
|
|
|
+ scoredDocs, _ = ranker.Rank([]types.IndexedDocument{
|
|
|
types.IndexedDocument{DocId: 1, BM25: 6},
|
|
types.IndexedDocument{DocId: 1, BM25: 6},
|
|
|
types.IndexedDocument{DocId: 3, BM25: 24},
|
|
types.IndexedDocument{DocId: 3, BM25: 24},
|
|
|
types.IndexedDocument{DocId: 2, BM25: 0},
|
|
types.IndexedDocument{DocId: 2, BM25: 0},
|
|
|
types.IndexedDocument{DocId: 4, BM25: 18},
|
|
types.IndexedDocument{DocId: 4, BM25: 18},
|
|
|
- }, types.RankOptions{ScoringCriteria: types.RankByBM25{}, ReverseOrder: true})
|
|
|
|
|
- utils.Expect(t, "[2 [0 ]] [1 [6000 ]] [4 [18000 ]] [3 [24000 ]] ", scoredDocsToString(scoredDocs))
|
|
|
|
|
|
|
+ }, types.RankOptions{ScoringCriteria: types.RankByBM25{}, ReverseOrder: true}, false)
|
|
|
|
|
+ // doc0因为没有AddDoc所以没有添加进来
|
|
|
|
|
+ utils.Expect(t, "[1 [6000 ]] [4 [18000 ]] [3 [24000 ]] ", scoredDocsToString(scoredDocs))
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func TestRankWithCriteria(t *testing.T) {
|
|
func TestRankWithCriteria(t *testing.T) {
|
|
|
var ranker Ranker
|
|
var ranker Ranker
|
|
|
ranker.Init()
|
|
ranker.Init()
|
|
|
- ranker.AddScoringFields(1, DummyScoringFields{
|
|
|
|
|
|
|
+ ranker.AddDoc(1, DummyScoringFields{
|
|
|
label: "label3",
|
|
label: "label3",
|
|
|
counter: 3,
|
|
counter: 3,
|
|
|
amount: 22.3,
|
|
amount: 22.3,
|
|
|
})
|
|
})
|
|
|
- ranker.AddScoringFields(2, DummyScoringFields{
|
|
|
|
|
|
|
+ ranker.AddDoc(2, DummyScoringFields{
|
|
|
label: "label4",
|
|
label: "label4",
|
|
|
counter: 1,
|
|
counter: 1,
|
|
|
amount: 2,
|
|
amount: 2,
|
|
|
})
|
|
})
|
|
|
- ranker.AddScoringFields(3, DummyScoringFields{
|
|
|
|
|
|
|
+ ranker.AddDoc(3, DummyScoringFields{
|
|
|
label: "label1",
|
|
label: "label1",
|
|
|
counter: 7,
|
|
counter: 7,
|
|
|
amount: 10.3,
|
|
amount: 10.3,
|
|
|
})
|
|
})
|
|
|
- ranker.AddScoringFields(4, DummyScoringFields{
|
|
|
|
|
|
|
+ ranker.AddDoc(4, DummyScoringFields{
|
|
|
label: "label1",
|
|
label: "label1",
|
|
|
counter: -1,
|
|
counter: -1,
|
|
|
amount: 2.3,
|
|
amount: 2.3,
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
criteria := DummyScoringCriteria{}
|
|
criteria := DummyScoringCriteria{}
|
|
|
- scoredDocs := ranker.Rank([]types.IndexedDocument{
|
|
|
|
|
|
|
+ scoredDocs, _ := ranker.Rank([]types.IndexedDocument{
|
|
|
types.IndexedDocument{DocId: 1, TokenProximity: 6},
|
|
types.IndexedDocument{DocId: 1, TokenProximity: 6},
|
|
|
types.IndexedDocument{DocId: 2, TokenProximity: -1},
|
|
types.IndexedDocument{DocId: 2, TokenProximity: -1},
|
|
|
types.IndexedDocument{DocId: 3, TokenProximity: 24},
|
|
types.IndexedDocument{DocId: 3, TokenProximity: 24},
|
|
|
types.IndexedDocument{DocId: 4, TokenProximity: 18},
|
|
types.IndexedDocument{DocId: 4, TokenProximity: 18},
|
|
|
- }, types.RankOptions{ScoringCriteria: criteria})
|
|
|
|
|
|
|
+ }, types.RankOptions{ScoringCriteria: criteria}, false)
|
|
|
utils.Expect(t, "[1 [25300 ]] [3 [17300 ]] [2 [3000 ]] [4 [1300 ]] ", scoredDocsToString(scoredDocs))
|
|
utils.Expect(t, "[1 [25300 ]] [3 [17300 ]] [2 [3000 ]] [4 [1300 ]] ", scoredDocsToString(scoredDocs))
|
|
|
|
|
|
|
|
criteria.Threshold = 4
|
|
criteria.Threshold = 4
|
|
|
- scoredDocs = ranker.Rank([]types.IndexedDocument{
|
|
|
|
|
|
|
+ scoredDocs, _ = ranker.Rank([]types.IndexedDocument{
|
|
|
types.IndexedDocument{DocId: 1, TokenProximity: 6},
|
|
types.IndexedDocument{DocId: 1, TokenProximity: 6},
|
|
|
types.IndexedDocument{DocId: 2, TokenProximity: -1},
|
|
types.IndexedDocument{DocId: 2, TokenProximity: -1},
|
|
|
types.IndexedDocument{DocId: 3, TokenProximity: 24},
|
|
types.IndexedDocument{DocId: 3, TokenProximity: 24},
|
|
|
types.IndexedDocument{DocId: 4, TokenProximity: 18},
|
|
types.IndexedDocument{DocId: 4, TokenProximity: 18},
|
|
|
- }, types.RankOptions{ScoringCriteria: criteria})
|
|
|
|
|
|
|
+ }, types.RankOptions{ScoringCriteria: criteria}, false)
|
|
|
utils.Expect(t, "[1 [25300 ]] [3 [17300 ]] ", scoredDocsToString(scoredDocs))
|
|
utils.Expect(t, "[1 [25300 ]] [3 [17300 ]] ", scoredDocsToString(scoredDocs))
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func TestRemoveDocument(t *testing.T) {
|
|
func TestRemoveDocument(t *testing.T) {
|
|
|
var ranker Ranker
|
|
var ranker Ranker
|
|
|
ranker.Init()
|
|
ranker.Init()
|
|
|
- ranker.AddScoringFields(1, DummyScoringFields{
|
|
|
|
|
|
|
+ ranker.AddDoc(1, DummyScoringFields{
|
|
|
label: "label3",
|
|
label: "label3",
|
|
|
counter: 3,
|
|
counter: 3,
|
|
|
amount: 22.3,
|
|
amount: 22.3,
|
|
|
})
|
|
})
|
|
|
- ranker.AddScoringFields(2, DummyScoringFields{
|
|
|
|
|
|
|
+ ranker.AddDoc(2, DummyScoringFields{
|
|
|
label: "label4",
|
|
label: "label4",
|
|
|
counter: 1,
|
|
counter: 1,
|
|
|
amount: 2,
|
|
amount: 2,
|
|
|
})
|
|
})
|
|
|
- ranker.AddScoringFields(3, DummyScoringFields{
|
|
|
|
|
|
|
+ ranker.AddDoc(3, DummyScoringFields{
|
|
|
label: "label1",
|
|
label: "label1",
|
|
|
counter: 7,
|
|
counter: 7,
|
|
|
amount: 10.3,
|
|
amount: 10.3,
|
|
|
})
|
|
})
|
|
|
- ranker.RemoveScoringFields(3)
|
|
|
|
|
|
|
+ ranker.RemoveDoc(3)
|
|
|
|
|
|
|
|
criteria := DummyScoringCriteria{}
|
|
criteria := DummyScoringCriteria{}
|
|
|
- scoredDocs := ranker.Rank([]types.IndexedDocument{
|
|
|
|
|
|
|
+ scoredDocs, _ := ranker.Rank([]types.IndexedDocument{
|
|
|
types.IndexedDocument{DocId: 1, TokenProximity: 6},
|
|
types.IndexedDocument{DocId: 1, TokenProximity: 6},
|
|
|
types.IndexedDocument{DocId: 2, TokenProximity: -1},
|
|
types.IndexedDocument{DocId: 2, TokenProximity: -1},
|
|
|
types.IndexedDocument{DocId: 3, TokenProximity: 24},
|
|
types.IndexedDocument{DocId: 3, TokenProximity: 24},
|
|
|
types.IndexedDocument{DocId: 4, TokenProximity: 18},
|
|
types.IndexedDocument{DocId: 4, TokenProximity: 18},
|
|
|
- }, types.RankOptions{ScoringCriteria: criteria})
|
|
|
|
|
|
|
+ }, types.RankOptions{ScoringCriteria: criteria}, false)
|
|
|
utils.Expect(t, "[1 [25300 ]] [2 [3000 ]] ", scoredDocsToString(scoredDocs))
|
|
utils.Expect(t, "[1 [25300 ]] [2 [3000 ]] ", scoredDocsToString(scoredDocs))
|
|
|
}
|
|
}
|