我正在开发一个项目,该项目使用 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
有没有人有任何关于如何在不太相关的结果之前执行返回更多相关结果(即更多搜索词匹配)的搜索的提示?