0

在 SOLR 中,我有一个包含id, words (indexed), raw_text字段的文档。我想以words这种方式搜索字段:单词是文章的不定式(或说关键字)。对于解析和词形还原(词干),我使用了另一个工具,所以这不是问题的重点。

例如:对于这两篇文章(文本),单词将是:

1昨天我没有去上班,因为是假期。

话:昨天上班,因为假期

2明天我早上去上班,晚上去购物。

话:明天上班早上晚上去商店

3个 字:明天上班

在搜索“go”时,我希望首先检索2(更相关),因为“go”-s 比1多。此外,我想对一堆单词使用更长的查询,并且大部分时间都检索到包含大部分单词的文章。

例如:搜索:“去明天工作”将返回23更相关,因为有两个“去”-s 与只有三分之一相反

那么问题来了:我应该如何存储words?多值还是单值?应该使用什么字段类型?

谢谢!

4

1 回答 1

1

(单值)text会适合你。

文本带有标记化、词干和停用词分析器。


Stemming 使用启发式方法来推导单词的词根。除此之外,它甚至可以以不定式形式找到您文章的根源:-)

为您的样本试一试(添加一些内容)

Original: Yesterday [yesterday's] I didn't go to work [working, workable], because it was holiday [holidays].
Stemmed: Yesterdai yesterdai s I didn t go to work work workabl becaus it wa holidai holidai
Original: Tommorrow I am going [go,going,gone] to work in the morning [mornings] and in the evening I am going shopping [shoppers, shops].
Stemmed: Tommorrow I am go go go gone to work in the morn morn and in the even I am go shop shopper shop 

因为它使用启发式,“workable”不与“work”共享根,“gone”不与“go”共享根。但它是一种折衷方案,在不降低结果质量的情况下工作得更简单、更快捷。


而“didnt”和“I”根据这个列表是停用词,所以它们会被自动消除。


如果您经常观察到不可接受的结果,请尝试实施Wordnet。他们引理、词性和其他自然语言的好东西。

于 2012-04-30T10:00:13.610 回答