Перемещение данных из Solr 1.5 в Solr 4.0 - PullRequest
3 голосов
/ 24 декабря 2010

У нас много данных, проиндексированных с помощью Solr 1.5.Поскольку эта версия больше не поддерживается, мы бы хотели перейти на транк Solr 4.0.Я могу легко загрузить все результаты Solr в файл .XML (это уже сделано, его размер превышает 40 ГБ), а затем запустить преобразование xslt для преобразования XML-данных результатов Solr в XML-обновление Solr (конечно, с использованием XSLTC), но есть ли другие »Стандартный "способ передачи данных между узлами Solr?Что-то вроде дампа.

Положите сюда XSLT-код для справки:

<xsl:output method="xml" indent="yes"/>

<xsl:template match="/response/result">
    <add>
        <xsl:apply-templates/>
        <commit/>
    </add>
</xsl:template>

<xsl:template match="doc">
    <doc>
        <xsl:apply-templates/>
    </doc>
</xsl:template>

<xsl:template match="arr/str">
    <xsl:element name="field">
        <xsl:attribute name="name">
            <xsl:value-of select="../@name"/>
        </xsl:attribute>
        <xsl:value-of select="text()"/>
</xsl:element>
</xsl:template>

<xsl:template match="str">
<xsl:element name="field">
        <xsl:attribute name="name">
            <xsl:value-of select="@name"/>
        </xsl:attribute>
        <xsl:value-of select="text()"/>
</xsl:element>
</xsl:template>

Ответы [ 2 ]

0 голосов
/ 25 декабря 2010

Я не знаю метода копирования из коробки.Мы реализовали что-то с помощью stx, но это не с открытым исходным кодом.

Другой способ сделать это - через SolrJ, так что вы можете воспользоваться всеми хорошими методами Java.(при этом вы могли бы выполнять даже «потоковое чтение» и «потоковую запись», но это потребовало бы наличия двух двоичных файлов SolrJ в пути к классам и доставило бы вам немало хлопот.)парсинг + запись в xml, и у вас не возникнет проблем:

server.setParser(new XMLResponseParser());
server.setRequestWriter(...;

Например, я ссылаюсь на проект jetwick .Настройка parser + writer выполняется в SolrAbstractSearch

Взгляните на этот класс для метода копирования.Затем вам придется изменить метод createDoc и readDoc в SolrTweetSearch

0 голосов
/ 25 декабря 2010

Вы должны быть в состоянии скопировать двоичные файлы индекса ($ SOLR_HOME / data) в новый узел.Кроме того, стандартным способом, вероятно, будет репликация индекса с использованием Solr replication , но я сомневаюсь, что это будет проще, чем просто копировать индекс вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...