Ссылки на внешние ключи в 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 по некоторым причинам. Я не очень старался с заглавными буквами на обоих концах, но не посередине, но это то, что сработало. Поэтому я предполагаю, что мораль этой истории состоит в том, что стоит попробовать много разных случаев, даже если они кажутся глупыми.

Другие вопросы по тегам