2017-09-27 140 views
0

在我的SOLR索引中,我有許多字段組成的文檔:name,title,description,tags等我想按照匹配的字段數排序文檔查詢,但不希望考慮匹配項出現在字段中的次數(因此沒有TFIDF,沒有BM25)。Apache Solr:按照與查詢匹配的字段數排序

例如:

Documents: 
ID: 100, title: "foo foo bar bar", name: "foo bar" 
ID: 101, title: "foo bar", name: "gibberish foo" 
ID: 102, title: "foo bar", name: "foo bar" 

當我搜索 「FOO欄」,我想的結果,按該順序進行排序:

  1. 102(兩個字段匹配)
  2. 100(還有兩個字段匹配,所以100和102應該完全相同)
  3. 101(一個字段匹配)

我該如何用SOLR來實現?什麼應該是sort條款?

回答

1

您可以嘗試通過使用像(tags:stack)^=1這樣的常量分數查詢來禁用術語頻率。請注意,這是一種特殊的語法。然後使用eDisMax查詢解析器,並在qf中指定這些字段,可能會加上一些提示,併爲tie指定一個值,如1。這需要確保所有子查詢(字段)都用於計算得分。

這應該做你想做的事,因爲更多的匹配字段會導致更高的分數,並且詞頻不再用於評分。