0

我在 Solr 中创建了一个用于查找命名实体的自定义 Tokenizer。我希望能够使用此信息来填充 lucene/solr 文档中的单独字段。

例如,我想用从文本中提取的所有位置名称填充一个名为“位置”的多值字段。为了提取位置,首先对文本进行标记以分离单词并确定哪些标记是位置。在这个过程之后,我想为标记器发出标记,但也用从文本中提取的所有位置名称填充字段“位置”。

根据我所做的研究,无法从 Tokenizer 或 TokenizerFactory 访问 SolrDocument 对象,因此无法从此处填充字段。

到目前为止,我提出的解决方案是创建一个自定义 UpdateRequestProcessorFactory 来处理文本并提取字段,然后 Tokenizer 再次处理文本以获取令牌。我想找到一种方法来完成这项工作并且只处理一次文本。

4

2 回答 2

1

我这样做的方式不像你正在拍摄的那样优雅:

我使用命名实体识别器预处理文档并将所有实体保存在单独的文件中。然后,当我发布到 Solr 时,我只是从该文件中读取实体并填充实体字段(人员、位置和组织不同)。这可以简化,但由于我已经为其他工作完成了解析,因此重用已经存在的内容会更容易。

于 2009-08-04T00:41:01.190 回答
0

这是一个我认为可以在 lucene 中使用的想法,但我不知道在 solr 中是否可行。您可以按照您的建议对典型令牌流链之外的字符串进行标记,然后使用NOT_ANALYZED选项手动将令牌添加到文档中。您必须使用 document.add(...) 分别添加每个标记,lucene 会将其视为单个字段进行搜索。

于 2009-06-18T23:40:45.600 回答