1

我正在尝试创建一个名为“sku”的字段 - 它使用以下分析器进行索引:

<fieldType name="sku" class="solr.TextField">
   <analyzer>
  <tokenizer class="solr.PatternTokenizerFactory" pattern="(SKU|Part(\sNumber)?):?\s(\[0-9-\]+)" group="3"/>
</analyzer>
 </fieldType>

这是通过阅读此处的文档http://lucidworks.lucidimagination.com/display/solr/Tokenizers#Tokenizers-RegularExpressionPatternTokenizer

我已经有一个成功发布到 solr 服务器的 Java 程序,但是它没有从任何文件中抓取 sku 并为它们编制索引。这是我的Java代码:

ContentStreamUpdateRequest up = new ContentStreamUpdateRequest(
                "/update/extract");
        up.addFile(arg0, arg0.getName());

        up.setParam("literal.id", arg0.getName());
        up.setParam("uprefix", "attr_");
        up.setParam("fmap.content", "attr_content");

        up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);

        server.request(up);

任何帮助表示赞赏。

我知道我可以自己解析文本文件并提取 SKU 并将它们在参数中发布到服务器,但我认为 Solr 可以为我做到这一点?

4

1 回答 1

0

很难说发生了什么,因为中间有几个步骤。

例如,您的 schema.xml 定义是什么。是否肯定使用sku作为其类型(而不是说字符串)。那么,字段名称是什么(attr_sku?),提取处理程序映射实际上是否正确映射到它?提取处理程序通常将元数据作为单个字段发送,然后将所有文件内容作为一个大的长字段发送。sku 在元数据中的某个地方吗?

我会将 copyField 放入非处理内容中,并查看内容是否真正进入 Solr 字段。然后,我将开始对正则表达式本身进行故障排除。

于 2013-01-21T19:11:32.907 回答