У меня есть индекс Solr с примерно 2,5 миллионами элементов, и я пытаюсь использовать ExternalFileField для повышения релевантности. К сожалению, когда я пытаюсь это сделать, это ОЧЕНЬ медленно, несмотря на то, что это мощная машина, а у Solr много доступной памяти.
Во внешнем файле у меня есть содержимое вроде:
747501=3.8294805903e-07
747500=3.8294805903e-07
1718770=4.03292174724e-07
1534562=3.8294805903e-07
1956010=3.8294805903e-07
747509=3.8294805903e-07
747508=3.8294805903e-07
1718772=3.8294805903e-07
1391385=3.8294805903e-07
2089652=3.8294805903e-07
1948271=3.8294805903e-07
108368=3.84404072186e-06
Каждая строка представляет собой идентификатор документа и соответствующий ему повышающий коэффициент.
В моем запросе я использую edismax, и я использую параметр повышения, устанавливая его в PageRank. Весь запрос здесь.
В моей схеме у меня есть:
<!-- External File Field Type-->
<fieldType name="pagerank"
keyField="id"
stored="false"
indexed="true"
omitNorms="false"
class="solr.ExternalFileField"
valType="float"/>
и
<field name="pagerank"
type="pagerank"
indexed="true"
stored="true"
omitNorms="false"/>
Но производительность просто, просто плохо. Я пропустил настройку или что-то в этом роде?
The external file may be sorted or unsorted by the key field, but it will be substantially slower (untested) if it isn't sorted.
И как я вижу, идентификаторы в вашем файле не отсортированы. Можете ли вы отсортировать его и проверить, поможет ли это? - person rchukh   schedule 06.11.2013