【问题标题】:Lucene PositionIncrementAttribute and search issueLucene PositionIncrementAttribute 和搜索问题
【发布时间】: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() 时,我们不知道属性。

我看到的典型问题是索引是基于新的令牌流完成的,这很好,但是当它检索文档时,文档具有较旧的实际令牌流(或实际输入),这就是作为输出给出的.

帮助/评论表示赞赏

【问题讨论】:

    标签: java search lucene


    【解决方案1】:

    听起来你应该使用荧光笔?

    Lucene 现在有三个,但我将从最新的 PostingsHighlighter 开始。我在这里写了一篇:http://blog.mikemccandless.com/2012/12/a-new-lucene-highlighter-is-born.html

    荧光笔标识字段文本的哪个部分与查询中的哪些字词匹配。

    【讨论】:

    • 您的博客条目非常有趣。谢谢。但我仍然不确定,如何将它用于上面的用例。你能分享一下你的想法吗?
    • 非常感谢任何帮助或评论。
    猜你喜欢
    • 2016-03-05
    • 2015-04-12
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    相关资源
    最近更新 更多