سؤال

أحاول فهرسة جدول mysql في solr باستخدام DataImportHandler، ولكن يبدو أنه لا يتم فهرسته

data-config.xml

 <?xml version="1.0" encoding="UTF-8" ?>
    <dataConfig>
      <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
                  url="jdbc:mysql://localhost/solr_tut" 
                  user="root" 
                  password=""/>
      <document>
        <entity name="product_id" 
                query="select product_id,name,description from products">
        </entity>
      </document>
    </dataConfig>

solrconfig.xml

<lib dir="../../../contrib/dataimporthandler/lib/" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-dataimporthandler-\d.*\.jar" />


<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
       <lst name="defaults">
          <str name="config">data-config.xml</str>
      </lst>
 </requestHandler>

عندما أحاول الفهرسة في solr admin(http://localhost:8080/solr/dataimport?command=full-import) أتلقى هذا الرد

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">19</int>
</lst>
<lst name="initArgs">
 <lst name="defaults">
  <str name="config">data-config.xml</str>
 </lst>
</lst>
<str name="command">full-import</str>
<str name="status">idle</str>
<str name="importResponse"/>
<lst name="statusMessages">
   <str name="Total Requests made to DataSource">1</str>
   <str name="Total Rows Fetched">4</str>
   <str name="Total Documents Skipped">0</str>
   <str name="Full Dump Started">2014-01-10 10:38:00</str>
   <str name="">
     Indexing completed. Added/Updated: 0 documents. Deleted 0 documents.
   </str>
   <str name="Committed">2014-01-10 10:38:00</str>
   <str name="Total Documents Processed">0</str>
   <str name="Time taken">0:0:0.33</str>
</lst>
<str name="WARNING">
This response format is experimental. It is likely to change in the future.
</str>
</response>

بعد إذا قمت بالبحث (http://localhost:8080/solr/select?q=*:*)، أحصل على 0 نتيجة.

التحديث-1: schema.xml

هل كانت مفيدة؟

المحلول

لقد فاتتك للتو تعيين الأعمدة في مجموعة النتائج إلى حقول المستندات.عليك أن تفعل ذلك داخل entity عنصر الخاص بك data-config.xml.

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
  <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost/solr_tut" 
              user="root" 
              password=""/>
  <document>
    <entity name="product_id" 
            query="select product_id,name,description from products">

 <!-- this is the place where you map the columns of your result set
      to fields of the new solr document -->

        <field column="PRODUCT_ID" name="id" />
        <field column="NAME" name="name" />
        <field column="DESCRIPTION" name="description" />

    </entity>
  </document>
</dataConfig>

في حالتك هناك خريطة حيوية واحدة فاتتك. product_id ل id.يمكن لـ Solr اكتشاف التعيينات تلقائيًا، إذا كان اسم العمود واسم الحقل في المخطط متساويين، كما هو مكتوب في الويكي

في المثال أعلاه، توجد تعيينات للحقول لحقول Solr.من الممكن تجنب إدخالات الحقول تمامًا في الكيانات إذا كانت أسماء الحقول هي نفسها (لا يهم حالة الأحرف) كتلك الموجودة في مخطط Solr.

ولكن كما قلت، في حالتك ليس هذا هو الحال. product_id و id لا تختلف.منذ الخاص بك id المجال هو required لن يتم إدراج هذه المستندات في الفهرس.

يمكن العثور على مزيد من المعلومات في Solr's Wiki حول DataImportHandler أو في الدليل المرجعي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top