Поиск Solr: количество совпадений многозначного поля с поисковым запросом - PullRequest
0 голосов
/ 16 апреля 2020

Допустим, ниже приведены мои документы в solr

[{"url": "/buy/1/", "items": ["i_123", "i_1234", "i_12345", "i_12346"]},  {"url": "/buy/2/", "items": ["i_123", "i_1234", "i_12346"]}, {"url": "/buy/3/","items": ["i_123", "i_12346"]},  {"url": "/buy/4/","items": ["i_123", "i_234", "i_2345"]}]

И мой запрос fq=items:(i_123 i_1234 i_12345) Тогда на результирующих страницах должно быть указано количество совпадающих элементов с запрашиваемыми элементами.

Результат должен быть с одним дополнительным полем matching_items_count

[{"url": "/buy/1/""items": ["i_123", "i_1234", "i_12345", "i_12346"],"matching_items_count" : 3}, {"url": "/buy/2/","items": ["i_123", "i_1234", "i_1234444"],"matching_items_count" : 2}, {"url": "/buy/3/","items": ["i_123", "i_12346"],"matching_items_count" : 1}, { "url": "/buy/4/","items": ["i_123", "i_234", "i_2345"],"matching_items_count" : 1}]

1 Ответ

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

В этом случае вы можете использовать функциональные запросы, чтобы получить счет.

В списке Filed (fl) вы можете написать, кроме url и items field -

url,items,count:sum(termfreq(items,"i_123"),termfreq(items,"i_1234"),termfreq(items,"i_12345"))
...