Как использовать Solr для расчета PageRank узла?
Я индексирую файл дампа Википедии, чтобы решить с этим форматом:
<page>
<title>Bruce Willis</title>
<ns>0</ns>
<id>64673</id>
<revision>
<id>789709463</id>
<parentid>789690745</parentid>
<timestamp>2017-07-09T02:27:39Z</timestamp>
<contributor>
<username>Materialscientist</username>
<id>7852030</id>
</contributor>
<comment>imdb is not a reliable source</comment>
<model>wikitext</model>
<format>text/x-wiki</format>
<text xml:space="preserve" bytes="57375">{{Use mdy dates|date=March 2012}}
{{Infobox person
| name = Bruce Willis
| image = Bruce Willis by Gage Skidmore.jpg
| caption = Willis at the 2010 [[San Diego Comic-Con]].
| birth_name = Walter Bruce Willis
| birth_date = {{Birth date and age|1955|3|19}}
|
| birth_place = [[Idar-Oberstein]], West Germany
| nationality = [[American people|American]]
| residence = [[Los Angeles]], [[California]], U.S.
И файл схемы ядра:
<fieldType name="string" class="solr.StrField"/>
<fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
<field name="id" type="string" indexed="true" stored="true" required="true"/>
<field name="_version_" type="long" indexed="true" stored="true"/>
<field name="TITLE" type="text_wiki" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true" />
<field name="REVISION_TEXT" type="text_wiki" indexed="true" stored="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true" />
<field name="REVISION_TIMESTAMP" type="date" indexed="true" stored="true" multiValued="true" />
<field name="CONTRIBUTOR_ID" type="int" indexed="true" stored="true" multiValued="true" />
<field name="CONTRIBUTOR_USERNAME" type="string" indexed="true" docValues="true" stored="true" multiValued="true" />
<dynamicField name="*" type="string" indexed="true" stored="true" multiValued="true"/>
<uniqueKey>id</uniqueKey>
Я не опубликовал весь контент schema.xml. Я знаю, что мы можем использовать Solr, чтобы получить оценку или сходство. Сходство рассчитывается на основе (freq * (k1 + 1)) / (freq + k1 * (1 - b + b * fieldLength / avgFieldLength)). Я думаю, что рейтинг страницы зависит от количества входящих и исходящих страниц. Но с этим типом поля я не могу получить входящие и исходящие страницы.
Так что я не знаю, как рассчитать PageRank с помощью Solr. Я правильно понял? Не могли бы вы дать мне несколько советов, если вы знаете, как это сделать? Спасибо
1 ответ
В зависимости от того, насколько продвинутым вы хотите, чтобы PageRank был. Если вы хотите учесть только количество входящих ссылок, вы можете рассчитать его, извлекая список страниц, на которые ссылается страница при индексации. Затем вы перебираете свои сохраненные страницы и выбираете количество документов, которые ссылаются на просматриваемую страницу, сохраняя новое поле с количеством документов, которые ссылаются на эту страницу. Сортируйте по этой оценке (или используйте ее для повышения и т. Д.), Чтобы повлиять на список возвращаемых результатов.