2011-03-04 74 views
1

我是新來SOLR,在創建索引我附上串到數據庫表ID問題唯一鍵Solr中

我schema.xml中字段,如下

<field name="id" type="string" indexed="true" stored="true" required="true"/> 
<uniqueKey>id</uniqueKey> 

和我傳遞「 GROUP1'爲id,但它存儲[B @ 1e090ee這樣。

我怎麼能存儲相同的值(GROUP1),而不是[B @ 1e090ee?

DB是否使用的是請幫助

+0

,你在哪裏看到'[B @ 1e090ee'? – 2011-03-04 15:33:27

+0

[B @ 1e090ee在我得到的結果中。 – 2011-03-05 05:44:11

+0

我在查詢中使用CONCAT('GROUP',group_id)作爲id,然後它轉換爲二進制格式。如何停止此轉換?請幫忙。 – 2011-03-05 12:29:08

回答

1

是GROUP_ID字符串或某些數字數據類型?
如果不是字符串,您需要使用適當的編碼cast it to char before concatenation

另外補充編碼參數(即你的MySQL數據庫的編碼一致)到數據源標籤,就像這樣:

<dataSource 
    driver="com.mysql.jdbc.Driver" 
    url="jdbc:mysql://host/dbname" 
    batchSize="-1" 
    user="username" 
    password="password" 
    readOnly="true" 
    autoCommit="true" 
    encoding="UTF-8" /> 
+1

那麼,它是哪一個,轉換或數據源編碼? – 2011-03-10 12:42:19

0


當你直接在你的db中執行你的查詢時,你會看到正確的值嗎?

恕我直言,問題必須與DataImportHandler或您實際上在您的group_id字段中具有類似的值([B @ 1e090ee))。
您是否檢查過您的dataCofig's dataSource中的參數encoding與您的數據庫編碼相同?

你能發佈你的dataConfig文件嗎?

+0

我發佈了我的dataconfig文件。請檢查。 – 2011-03-10 04:29:53

0

@mbonaci

我正在使用mysql數據庫。

當我執行相同的查詢

,結果來了精細

下面是我的數據配置文件

<?xml version="1.0" encoding="UTF-8" ?> 
<dataConfig> 
<dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://host/dbname" batchSize="-1" user="username" password="password" readOnly="true" autoCommit="true" /> 
    <document name="products"> 
     <entity name="item" query="select group_id,group_title,description,DATE_FORMAT(created_date, '%Y-%m-%dT%H:%i:%sZ') as createdDate,group_status,CONCAT('GROUP',group_id) as id,'GROUP' as itemtype from collaboration_groups where group_status=1 "> 
      <field column="id" name="id" /> 
      <field column="group_id" name="itemid" /> 
      <field column="itemtype" name="itemtype" /> 
      <field column="group_title" name="fullName" /> 
      <field column="description" name="description"/> 
      <field column="createdDate" name="createdDate"/> 
     </entity> 
</document> 
</dataConfig>