【问题标题】:Solr 4 - Indexing posted text fileSolr 4 - 索引发布的文本文件
【发布时间】:2013-01-21 16:29:15
【问题描述】:

我正在尝试创建一个名为“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 可以为我做到这一点?

【问题讨论】:

  • 您的 SKU 编号是否与该模式要捕获的一样?即:以“SKU”或“Part”开头,可选单词“Number”,可选冒号,必填(!)空格,一个或多个数字和连字符(仅此而已)被捕获。请注意,我相信这也会区分大小写。

标签: java solr solr4


【解决方案1】:

很难说是怎么回事,因为中间有好几个步骤。

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

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

【讨论】:

  • 感谢亚历山大的回复。我按照您的建议使用了 copyField 来查看内容是否进入 solr 字段。它确实如此。我没有看到正则表达式有任何问题,或者我直接从 Lucene 文档页面(在原始帖子中链接)复制它的示例数据,它看起来对我来说是正确的。尽管如此,我还是设法实现了我想要的(以不同的方式,使用不同的标记器)。感谢您让我在正确的轨道上进行调试。
猜你喜欢
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 2014-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多