3

我正在开发一个项目,该项目使用 Google App Engine 的文本搜索 API 来允许用户搜索包含单词字段的文档。我正在使用 MatchScorer 进行排序,根据文档“根据文档中的词频分配分数”。

当用户输入“商业促销”之类的查询时,我将其转换为看起来像words:business OR words:promo. 我原以为这会在只包含其中一个词的文档之前返回包含“商业”和“促销”这两个词的文档(因为文档说它根据文档中的词频分配分数)。但是,我经常看到在包含两个单词的文档之前只包含一个单词的结果。

我也尝试过使用RescoringMatchScorer进行查询,但是使用这个记分器看到了同样的问题。

我考虑过进行单独的查询 - 那些 AND 搜索词和那些 OR 搜索词 - 但是如果用户输入两个以上的搜索词,这将需要许多查询。例如,如果我搜索“高级业务解决方案”,我需要这样的查询来涵盖所有基础:

words:advanced AND words:business AND words:solutions
words:advanced AND words:business
words:advanced AND words:solutions
words:business AND words:solutions
words:advanced OR words:business OR words:solutions

有没有人有任何关于如何在不太相关的结果之前执行返回更多相关结果(即更多搜索词匹配)的搜索的提示?

4

1 回答 1

0

也许这取决于您如何解释“词频”这个短语。我认为您将其解释为“我的搜索词中有多少出现在文档中”。但这也可能意味着“搜索词在每个文档中出现了多少次(任何)”,实际上——至少根据我所做的一些简单实验——后者似乎是实际行为。

例如,包含 20 次“business”一词且从未提及“promo”一词的文档将比包含“business”和“promo”各一次的文档得分更高。这与您所看到的行为相符吗?

于 2014-04-11T18:26:14.133 回答