Ссылки на внешние ключи в Solr dataImportHandler
Я только начал использовать Solr. В моей базе данных есть коллекция папок, содержащих два вида сущностей, назовем их бочками и обезьянами. Папки содержат бочки, а бочки содержат обезьян. Пользователи должны иметь возможность искать стволы и обезьян, но им разрешено видеть только определенные папки, и поиск не должен возвращать стволы или обезьян в папках, которые им не разрешено видеть. У меня есть запрос фильтра, который отлично подходит для стволов, но у меня возникают проблемы с получением обработчика импорта данных для импорта идентификаторов папок для обезьян. Мой файл данных конфигурации выглядит так:
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/myDB" user="myUser" password="pass"/>
<document name="item">
<entity name="barrels" query="select * from barrels where is_deleted=0" transformer="TemplateTransformer"
deltaQuery="select barrel_id from barrels where last_modified > '${dataimporter.last_index_time}'">
<field column="itemType" template="barrels" name="itemType"/>
<field column="barrel_id" name="id" pk="true" template="barrel-${barrels.barrel_id}"/>
<!--Other fields-->
<field column="folder_id" name="folder_id"/>
</entity>
<entity name="monkeys" query="select * from monkeys where is_deleted=0" transformer="TemplateTransformer"
deltaQuery="select monkey_id from monkeys where last_modified > '${dataimporter.last_index_time}'">
<field column="itemType" template="monkeys" name="itemType"/>
<field column="monkey_id" name="id" pk="true" template="monkey-${monkeys.monkey_id}"/>
<field column="barrel_id" name="barrel_id"/>
<!--Other fields-->
<entity name="barrels"
query="select folder_id from barrels where barrel_id='${monkeys.barrel_id}'">
<field name="folder_id" column="folder_id" />
</entity>
</entity>
</document>
</dataConfig>
Когда я изменяю '${monkeys.barrel_id}' в запросе внешнего ключа на 28, он работает, но когда я пытаюсь заставить его использовать правильный идентификатор, он ничего не импортирует.
Может кто-нибудь заметить, что я делаю не так, или сказать мне хороший способ отладки такого рода вещей? Например, как я могу получить его, чтобы сказать мне, какое значение он имеет для ${monkeys.barrel_id}'? Все соответствующие поля определены в schema.xml. С тех пор, как возникла эта проблема, я убедился, что все документы имеют те же имена, что и таблицы, и попытался изменить различные биты запроса в верхний регистр, но в базе данных все в нижнем регистре, и, похоже, это не помогает.
1 ответ
Задав вопрос, мне все-таки удалось разобраться. Вот что я узнал:
1) Получение его, чтобы сказать вам, что запрос очень полезен, и это просто вопрос настройки уровня ведения журнала в порядке. Вы должны установить его в порядке во всех соответствующих местах, хотя. Так что для моего Standalone.xml (в WildFly), в дополнение к
<logger category="org.apache.solr">
<level name="FINE"/>
</logger>
немного, мне нужно было установить файловый регистратор и другой бит регистрации в порядке. Действительно должен был понять, что раньше...
2) Одиночные кавычки не являются частью синтаксиса оценки выражений, это просто кавычки. Таким образом, они вам не нужны при работе с целыми. Я предполагаю, что пример, который идет с solr, использует строковые идентификаторы, а не int ids, и поэтому у него есть кавычки?
3) Как только я избавился от кавычек, изменение дела имело значение. Для моей базы данных предпочтительным случаем был Barrel_ID по некоторым причинам. Я не очень старался с заглавными буквами на обоих концах, но не посередине, но это то, что сработало. Поэтому я предполагаю, что мораль этой истории состоит в том, что стоит попробовать много разных случаев, даже если они кажутся глупыми.