У меня есть тонны статей в разных магазинах. Некоторые из этих статей являются статьями собственного бренда и должны оцениваться выше, чем другие статьи в моих результатах поискаasticsearch (однако должны быть показаны как собственный, так и не собственный бренд.)
Я уже пробовал разные подходы с field_value_factor, но это не 'Похоже, что это хорошо с булевым полем. Я также попробовал подходящее решение в Повышение результата эластичного поиска на основе значения логического поля , но это не сработало для меня. Результаты с подходом ownBrand были еще ниже, чем у многих статей, не принадлежащих OwnBrand.
Индекс:
schema: {
articleId: { type: 'text' },
brandId: { type: 'text' },
brandName: { type: 'text' },
countryId: { type: 'text' },
description: { type: 'text' },
isOwnBrand: { type: 'boolean' },
stores: { type: 'keyword' },
},
};
Запрос:
query: {
function_score: {
query: {
bool: {
must: {
multi_match: {
query: searchterm,
fields: ['name^5', 'name.ngram'],
fuzziness: 'auto',
prefix_length: 2,
},
},
filter: [{ term: { stores: storeId } }],
},
},
},
},
};
Результат долженРасставьте приоритеты полей с isOwnBrand = true вверху, в то же время показывая соответствующие статьи с isOwnBrand = false ниже.
Я немного растерялся, как с этим справиться.