WedX - журнал о программировании и компьютерных науках

Solr DataImportHandler входит в SQL, но никогда не извлекает данные

Привет, я скопировал свою конфигурацию Solr с рабочего сервера Windows на новый, и, похоже, он не может выполнить импорт.

Оба они используют Win Server 2008 и SQL 2008R2. Это конфигурация импорта данных:

<dataConfig>  
  <dataSource type="JdbcDataSource"  name="ds1"
        driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"  
        url="jdbc:sqlserver://localhost;databaseName=DB"   
        user="Solr"  
        password="pwd"/>  
  <document name="datas">  
    <entity name="data" dataSource="ds1" pk="key"
    query="EXEC SOLR_COMPANY_SEARCH_DATA"
    deltaImportQuery="SELECT * FROM Company_Search_Data WHERE [key]='${dataimporter.delta.key}'"
    deltaQuery="SELECT [key] FROM Company_Search_Data WHERE modify_dt > '${dataimporter.last_index_time}'">  
          <field column="WorkDesc_Comments" name="WorkDesc_Comments_Split" />
          <field column="WorkDesc_Comments" name="WorkDesc_Comments_Edge" />
    </entity>  
  </document>  
</dataConfig>  

Я могу использовать MS SQL Profiler, чтобы посмотреть, как пользователь Solr успешно входит в систему, но потом ничего. Кажется, он даже не пытается выполнить хранимую процедуру. Любые идеи, почему это будет работать на одном сервере, а не на другом?

FTR единственное, что есть в журнале tomcat catalina:

org.apache.solr.handler.dataimport.JdbcDataSource$1 call
INFO: Creating a connection for entity data with URL: jdbc:sqlserver://localhost;databaseName=CATLive

ОБНОВЛЕНИЕ: я и Явар Хусейн из списка рассылки Solr предложили решение по замене драйвера MS JDBC драйвером с открытым исходным кодом — похоже, это работает, и это означает, что это проблема совместимости между последние версии Java, драйвер DIH и MS JDBC.

ОБНОВЛЕНИЕ 2: сообщалось о проблемах с Java 1.6.0_29, которую я использую! https://blogs.msdn.com/b/jdbcteam/archive/2011/11/07/supported-java-versions-november-2011.aspx


  • Итак, я установил, что в БД нет проблем - я могу импортировать из этой БД на свой старый сервер Solr. Я использую Jetty вместо Tomcat, а также максимально упростил схему импорта данных config/solr (импорт 4 строк строк из одной таблицы в одно поле). Но все равно ничего - обработчик импорта просто ничего не делает. 25.11.2011
  • Это безумие. Я создал новую установку Solr на новой машине, и снова она не работает. Как только я преодолел проблемы с конфигурацией, он снова ничего не делает. 28.11.2011
  • Я открыл задачу в системе отслеживания ошибок Solr: issues.apache.org/jira/browse /SOLR-2980 20.12.2011
  • STW: Я почти уверен, что это проблема с Java 1.6.0_29 — потому что это была разница между машиной, которая работала, и той, которая не работала (у той, которая не работала, была эта версия, для ясности!) 20.12.2011
  • Я думаю, что вы в основном правы; в моем случае и рабочие, и нерабочие машины были на одной и той же версии JRE; однако они использовали немного разные сборки этого выпуска. Подробности смотрите в моем обновленном ответе. 21.12.2011

Ответы:



2

Поскольку проблема может быть связана только с драйверами JDBC или их конфигурацией, я решил эту проблему, заменив их на jTDS Open. Исходный драйвер JDBC. Моя конфигурация закончилась так, когда я начал работать с этим:

<dataConfig>
  <dataSource type="JdbcDataSource" 
              driver="net.sourceforge.jtds.jdbc.Driver"
              url="jdbc:jtds:sqlserver://localhost;databaseName=DBName" 
              user="Solr" 
              password="password" name="ds1"/>
  <document>
    <entity dataSource="ds1" name="sometext" 
            query="SELECT * FROM mytable">
    </entity>
  </document>
</dataConfig>

HTH кто-то - но я не отмечаю это как ответ, потому что не понимаю, почему я не могу использовать драйверы MS...

28.11.2011
  • Теперь у меня возникла проблема, заключающаяся в том, что запуск дельта-обновления обновляет файл dataimport.properties, но затем просто повторно извлекает все данные, несмотря ни на что! Странный! 28.11.2011

  • 3

    Я думаю, вам не хватает этого

    url="jdbc:mysql://localhost/dbname"

    имя_БД -> \SQL2008

    25.11.2011
  • Нет? Эта строка работает на другом сервере — это MSSQL, а не mysql — следовательно, jdbc:sqlserver. Вы имеете в виду имя экземпляра? Я считаю, что это экземпляр по умолчанию, поэтому мне не нужно указывать имя (и не нужно на другом сервере). 25.11.2011
  • Здесь пробовали некоторые комбинации - в первую очередь: jdbc:sqlserver://localhost/MSSQLSERVER (MSSQLSERVER - это имя, указанное в Services.msc), а также имя сервера вместо localhost и вместо MSSQLSERVER - но не повезло. 25.11.2011

  • 4

    Я предполагаю, что когда вы скопировали конфигурацию Solr на новый сервер, вы также взяли файл индекса. Я подозреваю, что проблема связана с тем, что Solr уже проиндексировал эти данные. В вашем запросе указано, что вы хотите индексировать только те файлы, в которых произошли изменения с момента последнего индексирования.

    Имеет ли это смысл?

    28.11.2011
  • Я попытался начать снова с нуля, используя пример, дважды на двух разных серверах. Кроме того, когда вы запускаете «полный импорт», он очищает данные для начала по умолчанию (что, как я вижу, работает нормально). 28.11.2011
  • Есть ли какие-нибудь подсказки в окне вывода Jetty? 28.11.2011

  • 5

    Проблема возникает только в очень определенных выпусках среды выполнения Java и затрагивает приложения, выходящие за рамки только solr. Это наводит меня на мысль, что основной причиной является несовместимость или ошибка между средой выполнения Java и драйверами JDBC Microsoft SQL Server, а не проблема Solr.

    В моем конкретном случае у нас было две группы по 3 сервера в каждой. У одной группы не было никаких симптомов этой проблемы, а у другой группы были проблемы. Все серверы работали под управлением Solr 3.4.0 и одного и того же выпуска драйверов JDBC для SQL Server 3.0. На всех серверах также была установлена ​​JRE 1.6.0_20, но при ближайшем рассмотрении было установлено, что на проблемных серверах использовался немного более новый пакет для 1.6.0_20 (другой RPM, распространяемый через yum для CentOS).

    Понизив версию проблемных серверов до точной версии Java на заведомо исправных серверах, проблема сразу же исчезла.

    Конкретно,

    работает:
    https://pkgs.org/centos-5-rhel-5/centos-rhel-x86_64/java-1.6.0-openjdk-1.6.0.0-1.22.1.9.8.el5_6.x86_64.rpm.html

    не работает:
    https://pkgs.org/centos-5-rhel-5/centos-rhel-updates-x86_64/java-1.6.0-openjdk-src-1.6.0.0-1.23.1.9.10.el5_7.x86_64.rpm.html

    20.12.2011
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]