显示人类可读性最高的索引术语,使用带Solr分面搜索的词干字段

问题描述:

我们计划使用Solr向用户显示来自字段的“n”最常用词语,并且我们要应用词干分析,以便类似术语得到分组。显示人类可读性最高的索引术语,使用带Solr分面搜索的词干字段

现在,我们需要向用户展示条款,但词干术语并不总是人类可读的。有没有什么办法可以得到原始条款的例子,以便可以向用户展示这些条款?

我们唯一可以想到的解决方案是查询两个不同的领域,一个是词干和一个没有,然后自己做匹配。但我们认为这将会很昂贵(两个查询),并且可能容易出错(匹配可能会产生错误)。

有没有其他的方式来实现这个在Solr上?提前致谢。

在查询时间索引时间应用了词干分析,所以我不认为有一个简单的方法可以完成您要做的事情。但是,根据数据库中结果的数量,可以通过结合使用faceting和highlighting来完成此操作。突出显示的术语将是整个匹配术语而不是词干术语(因此,例如,术语术语可能是“associ”,但突出显示的术语将是“关联”,“关联”,“关联”等)。也许你可以做的是:

?q=keyword&facet=true&facet.field=myfield&&facet.limit=20hl=true&hl.fl=myfield&hl.fragsize=0&rows=10 

获取10行,检查结果突出显示(默认情况下,这些正在使用<em></em>标签,但你可以通过使用hl.simple.prehl.simple.post改变这个突出的 - 例如,使用&hl.simple.pre=[&hl.simple.post=]将匹配项放在方括号中)应该至少给出“原始”匹配项的样本。 hl.fragsize=0返回整个字段以及突出显示。

希望这会有所帮助。您可以在这里阅读更多关于突出显示参数的信息: http://wiki.apache.org/solr/HighlightingParameters

+0

再次感谢David为您提供现场答案。但是为什么这个解决方案需要数据库中的结果数呢? – rreyes1979 2012-03-12 15:15:56

+0

仅仅是因为它会得到一个匹配条件的样本,而不一定是全部。突出显示只会返回与查询相关的匹配项(包括返回的行数)。因此,如果您的Solr内核中有很多记录,则很可能(甚至可能)您无法使用此方法检索全部**匹配项。你可以尝试返回所有的行,但是这对于一个表面上非常简单的任务来说可能是很多数据。我希望我能很好地解释自己。 – 2012-03-12 15:19:34

+0

完美。非常感谢你的时间,经验和善意。 – rreyes1979 2012-03-12 15:31:08