0

我正在研究當前情況下,如果存在特定的文本搜索,需要增強少量文檔。 這種情況是,我有一組文檔,我必須根據特定的關鍵字執行查詢這個術語,但這裏的問題是。假設我們搜索關鍵字測試,它將獲取100條記錄,但是要求說少數文檔應該始終作爲最高結果,而不考慮權重和其他標準。我們如何才能做到這一點是Elasticsearch,任何建議和想法都是最受歡迎的。我們如何在Elasticsearch中手動操縱分數字段

+0

如果你知道哪些文件來提振在索引時間,您可以使用一個字段來標記它們,然後在搜索查詢中包含該字段。另一種方法是,如果在搜索時有一些標識符,則將其包含在查詢中。 – Henrik

+0

你能舉一個簡單的例子,說明你有什麼樣的結果,你期待什麼結果? – jay

+0

@jay讓我們說,當我們用「test」關鍵字進行術語查詢時,它返回1000 doc。假設我們有4個文檔,其ID分別是1,2,3,4。所以我想要的是每次我使用測試關鍵字進行術語查詢時,這4個文檔應該以頂級結果出現在前4個內容中。希望我清除了你的查詢。 –

回答

1

您可以控制與腳本的相關性。看一看: 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