0
我正在研究當前情況下,如果存在特定的文本搜索,需要增強少量文檔。 這種情況是,我有一組文檔,我必須根據特定的關鍵字執行查詢這個術語,但這裏的問題是。假設我們搜索關鍵字測試,它將獲取100條記錄,但是要求說少數文檔應該始終作爲最高結果,而不考慮權重和其他標準。我們如何才能做到這一點是Elasticsearch,任何建議和想法都是最受歡迎的。我們如何在Elasticsearch中手動操縱分數字段
我正在研究當前情況下,如果存在特定的文本搜索,需要增強少量文檔。 這種情況是,我有一組文檔,我必須根據特定的關鍵字執行查詢這個術語,但這裏的問題是。假設我們搜索關鍵字測試,它將獲取100條記錄,但是要求說少數文檔應該始終作爲最高結果,而不考慮權重和其他標準。我們如何才能做到這一點是Elasticsearch,任何建議和想法都是最受歡迎的。我們如何在Elasticsearch中手動操縱分數字段
您可以控制與腳本的相關性。看一看: https://www.elastic.co/guide/en/elasticsearch/guide/current/script-score.html
這是一個使用Groovy的一個例子:
price = doc['price'].value
margin = doc['margin'].value
if (price < threshold) {
return price * margin/target
}
return price * (1 - discount) * margin/target
所以,在僞代碼將是這樣的:
if (word == 'test') {
return score * n
}
return score
如果你知道哪些文件來提振在索引時間,您可以使用一個字段來標記它們,然後在搜索查詢中包含該字段。另一種方法是,如果在搜索時有一些標識符,則將其包含在查詢中。 – Henrik
你能舉一個簡單的例子,說明你有什麼樣的結果,你期待什麼結果? – jay
@jay讓我們說,當我們用「test」關鍵字進行術語查詢時,它返回1000 doc。假設我們有4個文檔,其ID分別是1,2,3,4。所以我想要的是每次我使用測試關鍵字進行術語查詢時,這4個文檔應該以頂級結果出現在前4個內容中。希望我清除了你的查詢。 –