У меня есть простой файл test.csv, в котором есть следующие данные
id,author,title
1,sanjay,ABC
2,vijay,XYZ
Я хочу проиндексировать этот файл в solr и передать ему уникальный идентификатор, называемый id = 1, чтобы иметь возможность запрашивать этот документ в будущем (что означает все значения, т.е. эквивалентные select * from table-name), и аналогичным образом хочу проиндексировать многие такие файлы с идентификатором документа, например id = 2, id = 3 и т. д.
В моем schema.xml id - это поле
<field name="id" type="string" indexed="true" stored="true" />
А также
<!-- Field to use to determine and enforce document uniqueness.
Unless this field is marked with required="false", it will be a required field
-->
<uniqueKey>id</uniqueKey>
И в тех случаях, когда id не существует в файле, но я хочу передать id в качестве параметра для уникальности уровня документа, он выдает следующую ошибку
[root@****ltest1 garyTestDocs]# curl http://localhost:8983/solr/update/csv?id='SL1' --data-binary @sample.csv -H 'Content-type:text/plain; charset=utf-8'
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 400 [doc=null] missing required field: ref</title>
</head>
<body><h2>HTTP ERROR 400</h2>
<p>Problem accessing /solr/update/csv. Reason:
<pre> [doc=null] missing required field: id</pre></p><hr /><i><small>Powered by Jetty://</small></i><br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
</body>
</html>
Таким образом, по сути, существует два сценария: проиндексируйте приведенный выше образец файла со столбцом id внутри файла, а другой сценарий - со столбцом id. Но в обоих сценариях мне нужно передать уникальный идентификатор уровня документа, то есть id = '1' или id = '2'.
Не могли бы вы объяснить свой ответ с помощью этих двух сценариев и синтаксиса curl и schema.xml (только необходимые поля)
1 ответ
В Solr представьте schema.xml как таблицу БД. Чтобы сохранить уникальность строк, у нас есть столбец с первичным ключом. Обычно как столбец id, в котором есть уникальные значения. Когда вы индексируете документы в solr, например, для файла csv в моем случае, в котором есть столбцы. столбец id должен быть уникальным и не может содержать пустых строк. есть много способов создать уникальные строки, но, например, я использовал формат file_name_1 ... (имеет ряд заливок, например 1,2,3 ...). Это единственный способ указать уникальность записей в solr. у вас не может быть уникальности на уровне документа, что означает невозможность предоставить уникальный ключ во время индексации. Итак, в schema.xml у вас есть уникальный ключевой тег, который представляет собой не что иное, как столбец в вашем документе, который будет уникальным.
Qry для индексации файла csv выглядит следующим образом: -
Curl http: //: 8983 / solr / update / csv --data-binary @ Sample.csv -H 'Content-type: text / plain; charset = utf-8 '
Schema.xml будет иметь идентификатор col
<field name="id" type="string" indexed="true" stored="true" />
Некоторые из столбцов в моих документах
<field name="author" type="text" indexed="true" stored="true" />
<field name="title" type="text" indexed="true" stored="true" />
<uniqueKey>id</uniqueKey>
Во время индексации я не использовал уникальный идентификатор уровня документа. Надеюсь, я ответил на свой вопрос!
Похожие вопросы
Новые вопросы
solr
Apache Solr - это поисковый сервер с открытым исходным кодом, основанный на поисковой библиотеке Lucene Java.