问题描述
【背景】 用户要求输入文章的完整标题也能将该文章完整检索下来,如“商海里穿梭的鱼:偷懒的6条原则”。【我的想法】 在设计时多加一个字段用于对文章的标题不分词直接索引,这样就能实现用户要求的功能。但由于要结合Highlighter将用户输入的短语用标签对<font></font>高亮显示,而Highlighter的getBestFragment()方法又必须要使用分词器或Token进行分词,这样把标题分词后就导致无法对整个文章标题加高亮了。 对于这个问题,虽然可以在做页面时给完整的文章标题可以手工添加高亮标签对<font></font>,但这样会带来一些麻烦,如代码变得很不协调,更糟糕的是可能会出现这样的情况:用户选择以文章的完整标题作为输入,且标题是“暧昧”,而“暧昧”本身就是一个分词单元,这样就会产生<font color='red'><font color='red'>暧昧</fong></font>的标签对嵌套(内层标签对是高亮器自动添加的,外层的则是在页面输出时手工添加的)。请问对于这个问题,有什么比较好的解决方法呢? 问题补充:beneo 写道
解决方案
引用不知道这算不算停用词了,比如说我输入标题(歌曲名)是“泳儿 - 小蛮腰”,最后分词得到的结果只有“泳”“蛮腰”,而“儿”“小”却没有分出来。所以最后高亮的结果是<font>泳</font>儿 - 小<font>蛮腰</font>。但我需要的是高亮成“<font>泳儿 - 小蛮腰</font>”呀。。这明显有stop word,你换一个没有stop-word的分词就好了,或者你把stop word的词典给删掉。
解决方案二:
楼主你的问题解决了吗!我也想问这个问题!不知道能否加下q:289270219!指导下!
解决方案三:
刚试了一下,用布尔查询的确可以把完整标题给搜出来。只是这种方法始终是基于一个个分词的查询,所以最后的高亮还是以分词为单位,标题中不属于分词的还是无法高亮呢~ 我只能说你的分词有些问题,可能你有stop word比方说“中华人民的共和国”这句是标题,你搜索中华人民的共和国你分词后是 中华|人民|的|共和国所有分词结果都occur.MUST的话,那结果高亮的就是“中华人民的共和国”,不是么?
解决方案四:
引用就是说,将整个完整的标题分出一个个token,然后将这些token用occur.MUST组合成布尔查询来查询标题对应的document? 是的。你不分词也可以,如果你的量不大的话
解决方案五:
引用solr能支持对不分词的索引字段进行全部高亮?? 首先,“分词后不能搜索到完整字句”这个理解是错误的。当然你不分词直接存储也是可以的,只要你的量不是很大分词后还是可以搜索到完整字句的,只要occur.MUST就可以了。此外,solr支持高亮
解决方案六:
用户要求输入文章的完整标题也能将该文章完整检索下来,如“商海里穿梭的鱼:偷懒的6条原则”。 为什么会认为,用户输入完整的字句,lucene就无法搜索的到呢??http://lucene.apache.org/solr/能够满足你的highlighting