waltertan1988
起个马甲好困难
2010-11-28 17:34
浏览 279

Lucene的Highlighter如何才能将不分词直接索引的字段加高亮?

【背景】
用户要求输入文章的完整标题也能将该文章完整检索下来,如“商海里穿梭的鱼:偷懒的6条原则”。

【我的想法】
在设计时多加一个字段用于对文章的标题不分词直接索引,这样就能实现用户要求的功能。但由于要结合Highlighter将用户输入的短语用标签对高亮显示,而Highlighter的getBestFragment()方法又必须要使用分词器或Token进行分词,这样把标题分词后就导致无法对整个文章标题加高亮了。
对于这个问题,虽然可以在做页面时给完整的文章标题可以手工添加高亮标签对,但这样会带来一些麻烦,如代码变得很不协调,更糟糕的是可能会出现这样的情况:用户选择以文章的完整标题作为输入,且标题是“暧昧”,而“暧昧”本身就是一个分词单元,这样就会产生暧昧的标签对嵌套(内层标签对是高亮器自动添加的,外层的则是在页面输出时手工添加的)。

请问对于这个问题,有什么比较好的解决方法呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • beneo
    beneo 2010-12-03 21:17
    已采纳

    [quote]
    不知道这算不算停用词了,比如说我输入标题(歌曲名)是“泳儿 - 小蛮腰”,最后分词得到的结果只有“泳”“蛮腰”,而“儿”“小”却没有分出来。所以最后高亮的结果是泳儿 - 小蛮腰。但我需要的是高亮成“泳儿 - 小蛮腰”呀。。
    [/quote]

    这明显有stop word,你换一个没有stop-word的分词就好了,或者你把stop word的词典给删掉。

    点赞 评论
  • beneo
    beneo 2010-11-28 18:14

    [code="java"]
    用户要求输入文章的完整标题也能将该文章完整检索下来,如“商海里穿梭的鱼:偷懒的6条原则”。
    [/code]
    为什么会认为,用户输入完整的字句,lucene就无法搜索的到呢??

    http://lucene.apache.org/solr/能够满足你的highlighting

    点赞 评论
  • beneo
    beneo 2010-11-29 13:09

    [quote]
    solr能支持对不分词的索引字段进行全部高亮??
    [/quote]

    首先,“分词后不能搜索到完整字句”这个理解是错误的。当然你不分词直接存储也是可以的,只要你的量不是很大

    分词后还是可以搜索到完整字句的,只要occur.MUST就可以了。

    此外,solr支持高亮

    点赞 评论
  • beneo
    beneo 2010-12-02 15:39

    [quote]
    就是说,将整个完整的标题分出一个个token,然后将这些token用occur.MUST组合成布尔查询来查询标题对应的document?
    [/quote]

    是的。你不分词也可以,如果你的量不大的话

    点赞 评论
  • cong517yang
    cong517yang 2012-08-15 11:15

    楼主你的问题解决了吗!我也想问这个问题!不知道能否加下q:289270219!
    指导下!

    点赞 评论

相关推荐