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