Создать индекс по двум несвязанным таблицам в Solr - PullRequest
0 голосов
/ 16 ноября 2011

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

В data-config.xml, который я создал для создания индекса, я написал следующий код

<dataConfig>
    <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/database" user="root" password=""/>
    <document name="content">
        <entity name="stock" query="select ST_StockID,ST_StockCode,ST_Name,ST_ItemDetail from stock where estatus = 'Active' limit 100">
            <field column="ST_StockID" name="stock_ST_StockID" />
            <field column="ST_StockCode" name="stock_ST_StockCode" />
            <field column="ST_Name" name="stock_ST_Name" />
            <field column="ST_ItemDetail" name="stock_ST_ItemDetail" />
        <entity name="auction" query="select iauctionid,rad_number,vsku,auction_code from auction limit 100">
            <field column="iauctionid" name="auction_iauctionid" />
            <field column="rad_number" name="auction_rad_number" />
            <field column="vsku" name="auction_vsku" />
            <field column="auction_code" name="auction_auction_code" />
        </entity>
        </entity>

    </document>
</dataConfig>

, а файл schema.xml содержит поляприведены ниже.

 <field name="stock_ST_StockID" type="string" indexed="true" stored="true" required="true"/>
    <field name="stock_ST_StockCode" type="string" indexed="true" stored="true" required="true"/>
    <field name="stock_ST_Name" type="string" indexed="true" stored="true" required="true"/>
    <field name="stock_ST_ItemDetail" type="text" indexed="true" stored="true" required="true"/>

    <field name="auction_iauctionid" type="string" indexed="true" stored="true" required="true"/>
    <field name="auction_rad_number" type="string" indexed="true" stored="true" required="true"/>
    <field name="auction_vsku" type="string" indexed="true" stored="true" required="true"/>
    <field name="auction_auction_code" type="text" indexed="true" stored="true" required="true"/>

Но таким образом индексы создаются неправильно, поскольку я помещаю другие данные таблицы в первую таблицу в data-config.xml.Если я создаю два элемента сущности, как показано ниже, то индексы не создаются.

<dataConfig>
    <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/lc" user="root" password=""/>
    <document name="content">
        <entity name="stock" query="select ST_StockID,ST_StockCode,ST_Name,ST_ItemDetail from stock where estatus = 'Active' limit 100">
            <field column="ST_StockID" name="stock_ST_StockID" />
            <field column="ST_StockCode" name="stock_ST_StockCode" />
            <field column="ST_Name" name="stock_ST_Name" />
            <field column="ST_ItemDetail" name="stock_ST_ItemDetail" />

        </entity>
        <entity name="auction" query="select iauctionid,rad_number,vsku,auction_code from auction limit 100">
            <field column="iauctionid" name="auction_iauctionid" />
            <field column="rad_number" name="auction_rad_number" />
            <field column="vsku" name="auction_vsku" />
            <field column="auction_code" name="auction_auction_code" />
        </entity>
    </document>
  </dataConfig>

Я не получил ваш ответ, можете ли вы рассказать подробнее?У меня тоже есть такое же требование.У меня есть две столовые акции и аукцион.В основном я работаю над сайтом продукта.Поэтому я должен создать индекс для обеих таблиц.и они вообще не связаны.

Пожалуйста, помогите

1 Ответ

0 голосов
/ 16 ноября 2011

Есть ли ошибки при индексации данных ??

Следующая конфигурация данных в порядке, так как у вас есть два несвязанных элемента.

<dataConfig>
    <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/lc" user="root" password=""/>
    <document name="content">
        <entity name="stock" query="select ST_StockID,ST_StockCode,ST_Name,ST_ItemDetail from stock where estatus = 'Active' limit 100">
            <field column="ST_StockID" name="stock_ST_StockID" />
            <field column="ST_StockCode" name="stock_ST_StockCode" />
            <field column="ST_Name" name="stock_ST_Name" />
            <field column="ST_ItemDetail" name="stock_ST_ItemDetail" />

        </entity>
        <entity name="auction" query="select iauctionid,rad_number,vsku,auction_code from auction limit 100">
            <field column="iauctionid" name="auction_iauctionid" />
            <field column="rad_number" name="auction_rad_number" />
            <field column="vsku" name="auction_vsku" />
            <field column="auction_code" name="auction_auction_code" />
        </entity>
    </document>
</dataConfig>

Однако мало ли чего не хватает?

  • Что такое поле id для сущности? Поскольку каждый документ должен иметь уникальный идентификатор, конфигурация кажется отсутствующей выше.
  • Кроме того, id не должно быть обязательным для участников, иначе акции и аукцион должны перезаписывать друг друга.
  • Так что вы можете добавить идентификатор в качестве stock_ & auction_
  • Вы также можете добавить в свою схему статическое поле «Акции» и «Аукцион» и заполнить их, что поможет вам отфильтровать результаты при поиске и, следовательно, повысить производительность.

Для присвоения идентификаторов -

Вы можете использовать следующее для создания значения id - это должно добавить Stock_ со значением поля ST_StockID.

<field column="id" template="Stock_#${stock.ST_StockID}" />

ИЛИ

Использовать псевдоним в sql, например. SELECT 'Stock_' || ST_StockID AS ID ..... как использовать -

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