Lucene Solr: можно ли индексировать по весам терминов? - PullRequest
0 голосов
/ 08 апреля 2020

Я хотел бы использовать Solr для индексации документов с весами терминов.

Doc1: это (w = 0.3) является (w = 0.4) первым (w = 0.1) (w = 0.7) do c (ш = 0,2)

Doc2: это (ш = 0,1) составляет (ш = 0,2) (ш = 0,5) секунды (ш = 0,8) до c (ш = 0,1)

Обратите внимание, что вес одного термина может различаться для двух документов.

После индексации я бы хотел, чтобы функция поиска учитывала эти веса при оценке документов. Например, если запрос «do c», я бы хотел, чтобы Doc1 получил более высокий балл.

Возможно ли это?

Спасибо!

1 Ответ

0 голосов
/ 14 апреля 2020

На это указал MatsLindh, спасибо!

Это можно сделать с помощью полезных нагрузок: https://lucene.apache.org/solr/guide/8_5/other-parsers.html#payload -score-parser

Я не рекомендую пытаться используйте пример здесь: https://lucidworks.com/post/end-to-end-payload-example-in-solr/

Вот решение.

1) Создайте новую коллекцию:

bin/./solr create -c my_docs -s 1 -rf 2

2) Напишите это (на основе примера) в CSV-файл: (1.csv)

id, txt_dpf

1, это | 0,3 равно | 0,4 | 0,1 сначала | 0,7 док | 0,2

2, это | 0,1 равно | 0,2, | 0,5 секунды | 0,8 doc | 0,1 `

3) Добавить содержимое в коллекцию:

bin/./post -c my_docs -type text/csv -out yes docs/csv/1.csv

4) запрос: localhost: 8983 / solr / my_docs / select? debug = results & fl = txt_dpf, Score & q = {! payload_score% 20f = txt_dpf% 20v = this% 20func = max% 20includeSpanScore = true}

Некоторые важные замечания:

  1. ВАЖНО имя поля, в котором находятся веса! он должен заканчиваться на "dpf".

  2. Используйте IncludeSpanScore = true, иначе ваш результат будет просто весом.

@ MatsLindh, еще раз спасибо!

...