Актуальность и Solr Группировка
Скажем, у меня есть следующая коллекция веб-страниц в индексе Solr:
+-----+----------+----------------+--------------+
| ID | Domain | Path | Content |
+-----+----------+----------------+--------------+
| 1 | 1.com | /hello1.html | Hello dude |
| 2 | 1.com | /hello2.html | Hello man |
| 3 | 1.com | /hello3.html | Hello fella |
| 4 | 2.com | /hello1.html | Hello sir |
...
И я хочу запрос для hello
показать результаты, сгруппированные по доменам, например:
Results from 1.com:
/hello1.html
/hello2.html
/hello3.html
Results from 2.com:
/hello1.html
Как определяется порядок сортировки по баллам? Я обычно использую комбинацию TF/IDF и PageRank для своих результатов, но так как это вычисляет баллы для каждого отдельного элемента, как оно определяет, как упорядочить группы? Что если 1.com/hello3.html и 1.com/hello2.html имеют очень низкую релевантность, но два результата, тогда как 2.com/hello1.html имеет действительно высокую релевантность и только один результат? Или наоборот? Или релевантность суммируется, когда в поле группировки несколько элементов?
Я огляделся вокруг, но не смог найти хорошего ответа на это.
Благодарю.
1 ответ
Мне кажется, что вы используете группировку результатов. Если это так, то группы сортируются в соответствии с sort
параметр, и записи в каждой группе сортируются в соответствии с group.sort
параметр. Если вы сортируете группы по sort=score desc
(это значение по умолчанию, поэтому вам не нужно его указывать), затем оно сортирует группы по баллам каждой группы. Как определяется эта оценка, не очень понятно, но если вы посмотрите на примеры в связанной документации, вы увидите следующее утверждение:
Группы отсортированы по количеству лучших документов в каждой группе.
Итак, в вашем примере, если 2.com hello1.html был наиболее релевантным документом в вашем наборе результатов, "Результаты из 2.com" были бы вашей наиболее релевантной группой, даже если "Результаты из 1.com" включают в себя три раза документ сосчитать.
Если это не то, что вы хотите, ваши лучшие варианты, чтобы предоставить другой sort
пост-обработка параметра или результата. Например, для одного проекта, в котором я принимал участие (где у нас было очень скромное количество групп), мы выбрали получение трех лучших результатов для каждой группы, а при постобработке мы рассчитали наш собственный порядок сортировки для групп на основе комбинация их оценок и значений numFound. Такая стратегия могла бы быть непозволительной для случаев со слишком большим количеством групп, и, возможно, не будет хорошей идеей, если более многочисленные группы рискуют затруднить поиск наиболее важных документов.