lucene主要使用的評分模型是布林模型 , tf/idf , 向量空間模型.
布林模型(boolean model) 只是在查詢中使用 and 、 or 和 not (與、或和非)這樣的條件來查詢匹配的文件 .布林模型舉例 : 乙個簡單的多詞查詢
get /my_index/doc/_search
}}
在內部的實現原理
get /my_index/doc/_search
}, }]}
}}
bool 查詢實現了布林模型 , 只要乙個文件與查詢匹配,lucene 就會為查詢計算評分,然後合併每個匹配詞的評分結果。這裡使用的評分計算公式叫做 實用評分函式(practical scoring function) 。查詢歸一化因子: 試圖將查詢 歸一化 , 這樣就能將兩個不同的查詢結果相比較。 quscore(q,d) =
querynorm(q) //查詢的歸一化因子,
· coord(q,d) //協調因子
· ∑ ( //詞條token相對於document的權重和
tf(t in d) //token在document裡面的詞頻
· idf(t)² //逆向文件頻率
· t.getboost() //是查詢中使用的 boost
· norm(t,d) // 字段長度歸一值 ,與索引時字段層 boost(如果存在)的和
) (t in q)
eryn
orm=
1sum
ofsq
uare
dwei
ghts
‾‾‾‾
‾‾‾‾
‾‾‾‾
‾‾‾‾
‾‾‾‾
‾√sumofsquaredweights 是查詢裡每個詞的 idf 的平方和。
協調因子(coord) :可以為那些查詢詞包含度高的文件提供獎勵,文件裡出現的查詢詞越多,它越有機會成為好的匹配結果。
舉例 : 設想查詢 quick brown fox ,每個詞的權重都是 1.5 。如果沒有協調因子,最終評分會是文件裡所有詞權重的總和。例如:
協調因子將評分與文件裡匹配詞的數量相乘,然後除以查詢裡所有詞的數量,如果使用協調因子,評分會變成:
協調因子能使包含所有三個詞的文件比只包含兩個詞的文件評分要高出很多。
bool 查詢缺省會對所有 should 語句使用協調功能,不過也可以將其禁用。
索引時權重提公升get /_search
}, },}]
}}}
不建議在建立索引時對字段提公升權重,有以下原因:
提公升整個索引的權重
當在多個索引中搜尋時, 可以使用引數 indices_boost 來提公升整個索引的權重,在下面例子中,當要為最近索引的文件分配更高權重時,可以這麼做:
get /docs_201
4_*/_search //這個多索引查詢涵蓋了所有以字串 docs_201
4_ 開始的索引。
, "query":
}}
舉例 : 查詢quick or brown or red or fox . 這裡 red 和 brown 是同義詞,可能只需要保留其中乙個,真正的需求是quick or (brown or red) or fox.可以做如下修改:get /_search
}, },},}
]}
}}//修改後:
get /_search
}, },
}, } ] }}]
}}}
有時, must_not 條件會過於嚴格。get /_search
},"must_not": }}
}}
為了達到效果, negative_boost 的值必須小於 1.0 。在這個示例中,所有包含負向詞的文件評分 _score 都會減半。get /_search
},"negative":
},"negative_boost": 0.5
} }
}
Elasticsearch 學習筆記
參考 關係型資料庫 elasticsearch 資料庫database索引index,支援全文檢索 表table型別type 資料行row文件document,但不需要固定結構,不同文件可以具有不同字段集合 資料列column字段field 模式schema 索引字段型別numeric dataty...
ElasticSearch學習筆記
2 解壓檔案unzip master.zip 3 允許外掛程式鏈結es,開啟跨域,需要修改elasticsearch的配置檔案elasticsearch.yml,檔案新增兩行 複製 4 進入elasticsearch目錄,啟動elasticsearch.bin elasticsearch 5 安裝e...
elasticsearch筆記 其他
put movies name plot put index doc 1 get index search put index put index doc 1 get index search get twitter search put index put index put index put ...