我正在使用 Solr 和 Cassandra(通过 DSE)。这是 Cassandra 中的一个数据条目(行):
ORDER_INFO_CF
-orderHistoryID=1000072459
-SPECIAL_COLUMN_KEY=0800000002||1294034400000|113942
我可以使用这个 schema.xml 毫无问题地索引 Cassandra 数据:
<schema name="ORDER_INFO_CF" version="1.1">
<types>
<fieldType name="string" class="solr.StrField"/>
<fieldType name="text" class="solr.TextField">
<analyzer><tokenizer class="solr.WikipediaTokenizerFactory"/></analyzer>
</fieldType>
</types>
<fields>
<field name="orderHistoryID" type="string" indexed="true" stored="true"/>
<field name="SPECIAL_COLUMN_KEY" type="text" indexed="true" stored="true"/>
</fields>
当然,将所有数据集中到一个以竖线分隔的字符串中并没有多大帮助。所以我尝试使用 PatternTokenizerFactory 将其拆分,如下所示(schema.xml):
<schema name="ORDER_INFO_CF" version="1.1">
<types>
<fieldType name="string" class="solr.StrField" />
<fieldType name="splitField" class="solr.TextField">
<analyzer><tokenizer class="solr.PatternTokenizerFactory" pattern="|" /></analyzer>
</fieldType>
</types>
<fields>
<field name="orderHistoryID" type="string" indexed="true" stored="true"/>
<field name="AccountNumber" type="splitField" indexed="true" stored="true"/>
<field name="ActionFlag" type="splitField" indexed="false" stored="true"/>
<field name="CreatedDate" type="splitField" indexed="true" stored="true"/>
<field name="CreatedTime" type="splitField" indexed="true" stored="true"/>
</fields>
orderHistoryID 仍在映射中,但该SPECIAL_COLUMN_KEY
值未拆分为上述四个字段。我确定我只是在PatternTokenizerFactory
. 我也看过DataImportHandler RegexTransformer
,但这似乎只适用于 RDBMS 和 XML 导入。
本质上,我在 Solr 中的数据映射如下:
orderHistoryID=1000072459
SPECIAL_COLUMN_KEY=0800000002||1294034400000|113942
我试图让它像这样映射:
orderHistoryID=1000072459
AccountNumber=0800000002
ActionFlag=
CreatedDate=1294034400000
CreatedTime=113942
有人可以指出我正确的方向吗?