我有一個包含 100 萬個短語的索引,我想在索引中搜索一些意大利語的查詢短語(這不是問題)。問題在于檢索匹配的順序:我想首先獲得完全匹配,所以我將默認相似度更改為“布林值”,我認為這是一個好主意,但有時它不起作用。例如:在我的索引中搜索包含單詞“film cortometraggio”的短語,第一個匹配項是:
- Distribuito dalla General Film Company, il film - un cortometraggio in due bobine
- Distribuito dalla General Film Company, il film - un cortometraggio di 150 metri - uscì nelle sale Cinematografiche
但是有一些更好的短語應該在這些短語之前回傳,例如:
- Robinet aviatore Robinet aviatore è un film cortometraggio del 1911 diretto da Luigi Maggi;
我認為應該首先回傳最后一個短語,因為我正在搜索的兩個單詞之間沒有空格。
使用 BM25 演算法,我得到的第一個匹配是“Pappi Corsicato Ha diretto film, cortometraggi , documentari e videoclip.”。在這種情況下,還應提供短語“Robinet aviatore Robinet aviatore è un film cortometraggio del 1911 diretto da Luigi Maggi;” 因為是完全匹配,我不明白為什么演算法會給另一個短語更高的分數。
我正在使用 Java Rest 高級客戶端,我正在做的搜索查詢是簡單的匹配短語查詢,如下所示: searchSourceBuilder.query(QueryBuilders.matchPhraseQuery(field, text).slop(5)
這是我索引中檔案的結構:
XContentBuilder builder = XContentFactory.jsonBuilder();
builder.startObject();
{
builder.field("id",id);
builder.field("frase",frase);
}builder.endObject();
IndexRequest indexRequest = new IndexRequest(indice);
indexRequest.source(builder);
IndexResponse indexResponse = client.index(indexRequest, RequestOptions.DEFAULT);
有誰知道如何更改相似性標準以按正確順序檢索匹配項?
uj5u.com熱心網友回復:
我已經在我的環境、相同版本、相同的分析器中復制了您的問題,但我仍然收到相同的結果。可能是對于 BM25 演算法,其他數百萬個檔案影響了分數。
我有一些建議可以幫助您解決問題:
- 不要使用全蒸汽分析儀,因為它們太具有侵入性,請使用輕型版本
- 您可以使用ngram標記器補充光分析器
- 您可以創建一個 bool 查詢,該查詢首先匹配沒有使用多欄位的分析器的欄位
映射示例:
PUT my-index-000001
{
"mappings": {
"properties": {
"message": {
"type": "text",
"fields": {
"analyzed": {
"type": "text",
"analyzer": "my_italian_analyzer"
}
}
}
}
}
}
查詢可能類似于:
GET italian_example/_search
{
"query": {
"bool": {
"should": [
{
"match_phrase": {
"message": {
"query": "film cortometraggio",
"slop": 5
}
}
},
{
"match_phrase": {
"message.analyzed": {
"query": "film cortometraggio",
"slop": 5
}
}
}
]
}
}
}
uj5u.com熱心網友回復:
您可以像這樣使用布爾查詢:
{
"query": {
"bool": {
"should": [
{
"match_phrase": {
"message": {
"query": "film cortometraggio",
"slop": 5
}
}
},
{
"match_phrase": {
"message": "film cortometraggio"
}
}
]
}
}
}
在此查詢中,您提升特定短語。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/348850.html
標籤:弹性搜索
