Как хранить информацию в solr? - PullRequest
0 голосов
/ 07 июня 2019

Я недавно начал изучать Solr, для меня некоторые вещи остаются непонятными, я объясню, что я пытаюсь сделать, пожалуйста, скажите мне, в какую сторону идти.

Мне нужно веб-приложение, в котором можно будет сохранять данные, некоторые поля из которых будут в виде текста, некоторые в виде файла, как понятно, как добавлять поля в виде текста, невозможно добавить файлы или их содержимое в виде текста, в этом случае я не знаю, где хранить сам файл?

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

Мне было бы очень приятно и понятно взглянуть на это на каком-то примере, может быть, у вас есть ссылка?

Ответы [ 2 ]

1 голос
/ 07 июня 2019

Это слишком широко и неконкретно, чтобы дать ответ, который вы можете просто реализовать; в общем случае вы отправляете документы вместе с идентификатором в Solr ( через Tika в Извлекающем обработчике запросов / ячейка Solr ).

Документы должны храниться где-то еще, так как Solr не отвечает за хранение документов для вас. Они могут храниться в облачной службе, на сетевом диске или локальном диске - это будет зависеть от вашего веб-приложения.

Ваше приложение затем получит файл от пользователя, сохранит строку базы данных, назначающую файл пользователю, сохранит файл где-нибудь (S3 / GoogleCloudStorage / Local path) под известным именем (обычно это идентификатор строки из базы данных) и отправьте содержимое в Solr для индексации вместе с метаданными (такими как идентификатор пользователя) и идентификатором файла.

Поиск вернет вам идентификатор, и вы сможете получить документ, где бы вы его ни хранили.

0 голосов
/ 09 июня 2019

Как уже упоминал MatsLindh, подход к достижению того, что вы ищете.

Вот несколько шагов, с помощью которых вы можете индексировать файлы с известным расположением.

Обновите solrConfig.xml с помощьюстроки ниже

<!-- Load Data Import Handler and Apache Tika (extraction) libraries -->
    <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar"/>
    <lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar"/>

  <requestHandler name="/dataimport" class="solr.DataImportHandler">
    <lst name="defaults">
      <str name="config">tika-data-config.xml</str>
    </lst>
  </requestHandler>

Создайте файл с именем tika-data-config.xml в папке G:\Solr\TikaConf\conf.с приведенной ниже конфигурацией.Это место может быть другим для вас.

<dataConfig>
  <dataSource type="BinFileDataSource"/>
  <document>
    <entity name="file" processor="FileListEntityProcessor" dataSource="null"
            baseDir="G:/Solr/solr-7.7.2/example/exampledocs" fileName=".*xml"
            rootEntity="false">

      <field column="file" name="id"/>

      <entity name="pdf" processor="TikaEntityProcessor"
              url="${file.fileAbsolutePath}" format="text">

        <field column="text" name="text"/>

      </entity>
    </entity>
  </document>
</dataConfig>

Добавьте следующие поля в ваш schema.xml

<field name="text" type="text_general" indexed="true" stored="true" multiValued="false"/>

Обновите XML-файл solrConfig, как показано ниже, чтобы отключить режим без схемы

<!-- The update.autoCreateFields property can be turned to false to disable schemaless mode -->
  <updateRequestProcessorChain name="add-unknown-fields-to-the-schema" default="${update.autoCreateFields:false}"
           processor="uuid,remove-blank,field-name-mutating,parse-boolean,parse-long,parse-double,parse-date,add-schema-fields">
    <processor class="solr.LogUpdateProcessorFactory"/>
    <processor class="solr.DistributedUpdateProcessorFactory"/>
    <processor class="solr.RunUpdateProcessorFactory"/>
  </updateRequestProcessorChain>

Перейдите на страницу администрирования Solr, выберите созданное вами ядро ​​и нажмите на импорт данных.

Solr Data Import

После того, как данные импортированы или проиндексированы, вы можете проверитьто же самое, запросив его.

Solr Query Page

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

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