0

2 つの異なるエンティティ (この場合は SQL の 2 つのテーブル) を Lucene インデックスにインデックス付けしたいと考えています。1 つのテーブルには製品が含まれ、別のテーブルにはニュース項目が含まれています。

同じ検索方法 (クエリ) を使用して製品とニュース アイテムの両方を検索できるようにするには、それらが同じインデックスにある必要があることを理解しています。

data-config.xml で、対応するエンティティを持つ 2 つのドキュメント タイプを定義しました。

schema.xml で、製品とニュース項目のフィールドも定義しました。私のデータベース設計 (テーブル) では、製品テーブルの一意のキーは「ProductID」と呼ばれ、ニュース アイテムの一意のキーは「Id」と呼ばれます (これは使用している CMS によって作成されます)。

data-config.xml では、両方の一意の ID を同じ「名前」にマップする必要があります。これでうまくいくでしょうか?

ここで正しいアプローチに従っていますか?

私が考えていることの例;

データ構成.xml

<!-- Products --> 
 <document name="products">  
    <entity name="product" dataSource="sqlServer" pk="ProductID" query="SELECT 
        ProductID,
        ProductNumber,
        ProductName,
        FROM EcomProducts">
        <field column="ProductID" name="**Id**"/> 
        <field column="ProductNumber" name="ProductNumber"/> 
        <field column="ProductName" name="ProductName"/> 
    </entity>  
  </document>

<!-- News items ---> 
  <document name="newsitems">  
    <entity name="newsitems" dataSource="sqlServer" pk="id" query="SELECT 
        Id,
        NewsItemTitle,
        NewsItemContent,
        FROM ItemType_NewsItems">
        <field column="Id" name="**Id**"/> 
        <field column="NewsItemTitle" name="NewsItemTitle"/> 
        <field column="NewsItemContent" name="NewsItemContent"/> 
    </entity>  
  </document>  

schema.xml

 <!-- Products --->
 <field name="**Id**" type="text_general" indexed="true" stored="true" required="true" />  
 <field name="ProductNumber" type="text_general" indexed="true" stored="true" required="false" /> 
 <field name="ProductName" type="text_general" indexed="true" stored="true" required="false" multiValued="false"/>

 <!-- Tips og fif --->      
 <field name="**Id**" type="text_general" indexed="true" stored="true" required="true" />   
 <field name="NewsItemTitle" type="text_general" indexed="true" stored="true" required="false" />  
 <field name="NewsItemContent" type="text_general" indexed="true" stored="true" required="false" /> 

ID

4

1 に答える 1