Я следил за этой записью в блоге, но в люцене. net:
https://lucidworks.com/post/getting-started-with-payloads/
Вот так выглядит мое сходство:
public class PayloadSimilarity : DefaultSimilarity
{
public override float ScorePayload(int doc, int start, int end, BytesRef payload)
{
var score = PayloadHelper.DecodeSingle(payload.Bytes, start);
return score;
}
}
Затем, как упоминается в сообщении в блоге, я установил сходство для поисковика, а также для индексатора. В Luke я вижу, что полезная нагрузка есть. И если я ищу полезные данные, это ничего мне не возвращает, поэтому я думаю, что полезные данные есть, но Searcher не учитывает их.
Я использую Query Parser с комбинацией Searcher и пользовательское сходство.
Объяснение показывает, что использовалось мое пользовательское сходство, но не показывает, что использовалось ScorePayload, и, конечно, оно не нарушается в функции ScorePayload, если я ставлю точку останова.
Заранее спасибо за вашу помощь!
PS: И вот как я строю Анализатор:
public static Analyzer WithTermBasedBoosting(char delimiter) => CustomAnalyzer
.WithTokenizer("WhitespaceTokenizer")
.AddTokenFilter("DelimitedPayloadTokenFilter")
.With(delimiter,new SingleEncoder())
.Build();
Ради простоты я создал другой Анализатор с Наименьшее количество вещей:
public static Analyzer MyDelimited(char delimiter) => Analyzer.NewAnonymous(createComponents: (fieldName, reader) =>
{
Tokenizer source = new WhitespaceTokenizer(CustomAnalyzer.Version, reader);
TokenStream filter = new DelimitedPayloadTokenFilter(source, delimiter, new SingleEncoder());
return new TokenStreamComponents(source, filter);
});