【发布时间】:2013-05-25 06:24:35
【问题描述】:
我是 Lucene 的新手。
我已经实现了分析器和一些过滤器。原始令牌流被修改,属性插入为 PositionIncrementAttrbute 为 0 的令牌。
例如:句子:“SO 很有名” 通过自定义分析器和少量过滤器并将属性附加到令牌后,我们得到的新 Tokenstream 是 “SO名词SocialSite著名JJ正” 我基本上是在这里尝试标记每个单词。 SO既是名词又是SocialSite,着名的是形容词(JJ)并且是积极词等。
这现在绝对可以根据属性进行搜索(这里:名词、SocialSite、JJ、肯定)。即,我可以搜索“名词”或说“肯定”,仍然得到“SO is Famous”作为输出。
但是,由于我在添加文档时将整个文本“SO is Famous”作为一个字段,当我搜索“SocialSite”时,我得到一个文档作为输出,其中包含“SO is Famous”作为一个的领域。
但是,是否有可能只获得“SO”而不是整个文本作为输出?即只有实际的标记(原始输入中存在的标记)作为输出? 另一个例子:如果我搜索说“肯定”,我应该得到“著名”作为输出,而不是整个“SO 很有名”。
我知道如果我把它作为一个Field放在文档中,我应该可以得到它,但是我如何添加这样一个Field呢?因为,只有当令牌通过过滤器时,我们才能知道所有属性将附加到它,所以当我们执行 indexwriter.addDocument() 时,我们不知道属性。
我看到的典型问题是索引是基于新的令牌流完成的,这很好,但是当它检索文档时,文档具有较旧的实际令牌流(或实际输入),这就是作为输出给出的.
帮助/评论表示赞赏
【问题讨论】: