0

Solr インデックスから doc_id という特定のフィールドを検索できません。取得するデータは DB2 からのもので、doc_id はテーブル内の PK です。

ここにデータのインポートとスキーマ xml があります

助けてください

<dataConfig>
  <dataSource driver="com.ibm.db2.jcc.DB2Driver" url="jdbc:db2://infbz1051.in.ibm.com:50000/SCION" user="db2admin" password="db2admin" batchSize="10000" readOnly="true" autoCommit="true" transactionIsolation="TRANSACTION_READ_UNCOMMITTED" connectionTimeout="5000000" />
  <document name="socialpost">        
    <entity name="post" pk="doc_id" query="select d.DOC_ID,d.SRC_DOC_ID,d.PARENT_ID,d.SRC_PARENT_ID,d.AUTHOR_ID,d.FORUM,d.CUSTOMER as customer,d.TEXT as post_text,d.text as raw_text,d.URL as doc_url,d.LIKES,d.FWD,d.COMMENTS,a.AUTHOR_ID,a.AUTHOR_NAME,a.EMAIL as author_email,a.AGE as author_age,a.GENDER as author_gender from DOC_DETAILS d,AUTHOR_DETAILS a where d.AUTHOR_ID=a.AUTHOR_ID" deltaImportQuery="select d.DOC_ID,d.SRC_DOC_ID,d.PARENT_ID,d.SRC_PARENT_ID,d.AUTHOR_ID,d.FORUM,d.CUSTOMER,d.TEXT as post_text,d.text as raw_text,d.URL as doc_url,d.LIKES,d.FWD,d.COMMENTS,a.AUTHOR_ID,a.AUTHOR_NAME,a.EMAIL as author_email,a.AGE as author_age,a.GENDER as author_gender from DOC_DETAILS d,AUTHOR_DETAILS a where  d.AUTHOR_ID=a.AUTHOR_ID AND d.doc_id='${dataimporter.delta.DOC_ID}'  with ur" deltaQuery="select DOC_ID from doc_details where lastupdatedtime &gt; '${dataimporter.last_index_time}' with ur">
       <entity name="concept" query="SELECT S.concept as concept FROM SENTIMENT_AND_CONCEPTS S where S.DOC_ID='${post.DOC_ID}' with ur" >
       </entity>
       <entity name="category" query="SELECT ann.doc_id, ann.ANNOTATIONMETAVALUES as category FROM annotations ann where ann.annotator_id=125  and ann.doc_id='${post.DOC_ID}' with ur" >
       </entity>
       <entity name="hcategory" query="SELECT ann.doc_id, ann.ANNOTATIONMETAVALUES as hcategory FROM annotations ann where ann.annotator_id=129  and ann.doc_id='${post.DOC_ID}' with ur" >
       </entity>
       <entity name="tcategory" query="SELECT ann.doc_id, ann.ANNOTATIONMETAVALUES as tcategory FROM annotations ann where ann.annotator_id=127  and ann.doc_id='${post.DOC_ID}' with ur" >
       </entity>
       <entity name="isparent" query="SELECT count(*) as isparent  FROM db2admin.doc_details where doc_id='${post.DOC_ID}' and parent_id=doc_id with ur" >
       </entity>
       <entity name="rankscore" query="select c.CATEGORY_RANK_SCORE as rankscore from CATEGORY_ASSIGNMENT_TABLE c,ANNOTATIONS A where a.doc_id=c.doc_id AND a.ANNOTATIONMETAVALUES =c.category_name AND a.ANNOTATOR_ID=125 and  a.doc_id='${post.DOC_ID}' with ur" >
       </entity>
       <entity name="posttype" query="SELECT ann.doc_id, ann.ANNOTATIONMETAVALUES as posttype FROM annotations ann where ann.annotator_id=35  and ann.doc_id='${post.DOC_ID}' with ur" >
       </entity>
       <entity name="sentimentinfo" query="select c.CATEGORY_SENTIMENT as sentimentinfo from CATEGORY_ASSIGNMENT_TABLE c,ANNOTATIONS A where a.doc_id=c.doc_id AND a.ANNOTATIONMETAVALUES =c.category_name AND a.ANNOTATOR_ID=125 and  a.doc_id='${post.DOC_ID}' with ur" >
       </entity>
    </entity>
  </document>
</dataConfig>

スキーマ.xml

<field name="doc_id" type="string" indexed="true" stored="true" required="true" multiValued="false"/> 
<field name="customer" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="src_doc_id" type="string" indexed="true" stored="true" omitNorms="true" multiValued="false"/>
<field name="parentid" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="src_parent_id" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="author_id" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="forum" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="timeposted" type="date" indexed="true" stored="true" multiValued="false"/>
<field name="post_text" type="string" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true" multiValued="false"/>
<!-- Raw text copy for retrieval convenience --> 
<field name="raw_text" type="string" indexed="true" stored="true" omitNorms="true" termVectors="true" termPositions="true" termOffsets="true" multiValued="true"/>
<copyfield src="post_text" dest="text_raw" />
<field name="url" type="string" indexed="true" stored="true" omitNorms="true" multiValued="false"/>
<field name="likes_fwd_comments" type="int" indexed="true" stored="true" multiValued="false"/>
<field name="lastupdatedtime" type="date" indexed="true" stored="true" omitNorms="true" multiValued="false"/>
4

1 に答える 1

0

SQL はかなりリテラルです。これによるさまざまな SQL の結果には、Solr スキーマにあるような「doc_id」ではなく、「d.DOC_ID」や「ann.doc_id」などの列が含まれます。

一部の SQL フィールドに「顧客として」のようなものがあります。これは、ドキュメント全体が検証に合格すると仮定すると、これらの特定のフィールドが正しく機能することを意味します - 必須 (または uniqueKey) とマークされたフィールドがすべて存在するなど.

選択ステートメントのすべてのフィールドに「AS xxx」が必要になる場合があります。

「as」構文を使用しているフィールドを検索する場合、それらのほとんどが「string」型に設定されていることに注意してください。サンプル スキーマでは、「文字列」タイプは StrField であり、分析機能がないため、フィールド全体またはワイルドカードの正確な一致しか実行できません。StrField 型では、複数単語の文字列で単一の単語を検索することはできません。

于 2013-09-26T20:59:13.697 に答える