sql >> データベース >  >> RDS >> Mysql

Solr-DIHは多対多フィールドを定義およびインポートします

    ドキュメントとグーグルを表示した後、私は親切に問題を解決しました。

    テーブル

    • 作成者
    • book_author_map(これは多対多の関係の真ん中のテーブルです)

    DIH構成ファイル

    <?xml version="1.0" encoding="UTF-8" ?>
    <dataConfig>
        <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/test?characterEncoding=utf8&amp;zeroDateTimeBehavior=convertToNull" user="root"
            password="123456" />
        <document>
            <entity name="book" pk="id"
                query="SELECT * FROM book where status = 0 limit 200000;"
                deltaImportQuery="SELECT * FROM book where status = 0 and id='${dih.delta.id}' limit 200000;"
                deltaQuery="select id from book where status = 0 and CONVERT_TZ(`update_date`, @@session.time_zone, '+00:00')  &gt; '${dih.last_index_time}'"
            >
                <entity name="author"
                    query="SELECT au.cn_name as author_cn_name FROM author AS au JOIN book_author_map AS bam ON au.id = bam.author_id WHERE bam.book_id = ${book.id} limit 10;"
                >
                    <field name="authors" column="author_cn_name" />
                </entity>
            </entity>
        </document>
    </dataConfig>
    

    フィールド定義

    <field name="cn_name" type="textComplex" indexed="true" stored="true" />
    <field name="en_name" type="textComplex" indexed="true" stored="true" />
    
    <field name="status" type="int" indexed="true" stored="true" />
    
    <field name="authors" type="textComplex" indexed="true" stored="true" multiValued="true" />
    

    TODO

    • parentDeltaQuery 親エンティティのpkを取得しますが、呼び出されるとどうなりますか?それは必要ですか?
    • deltaQueryを実行します およびparentDeltaQuery サブエンティティで必要ですか?



    1. HAVING句を使用してMySQLビューからSELECTすると、空の結果セットが返されます

    2. Expressを使用したnodejsを使用したMySQLへのフォームデータの投稿

    3. 可変ヘッダーを持つExcelファイルのインポート

    4. 不明な長さの配列を格納する