Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 如何按相关性对appengine搜索索引结果排序?_Google App Engine_Gae Search - Fatal编程技术网

Google app engine 如何按相关性对appengine搜索索引结果排序?

Google app engine 如何按相关性对appengine搜索索引结果排序?,google-app-engine,gae-search,Google App Engine,Gae Search,我正在做一个项目,它使用Google App Engine的文本搜索API允许用户搜索包含单词字段的文档。我使用MatchScorer进行排序,它根据“根据文档中的术语频率分配分数” 当用户输入一个类似于“business-promo”的查询时,我将其转换为一个类似于words:business或words:promo的查询字符串。我本以为这会在只包含其中一个词的文档之前返回包含“业务”和“促销”两个词的文档(因为文档说它根据文档中的术语频率分配分数)。然而,在包含两个词的文档之前,我经常看到只

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

当用户输入一个类似于“business-promo”的查询时,我将其转换为一个类似于
words:business或words:promo
的查询字符串。我本以为这会在只包含其中一个词的文档之前返回包含“业务”和“促销”两个词的文档(因为文档说它根据文档中的术语频率分配分数)。然而,在包含两个词的文档之前,我经常看到只包含其中一个词的结果

我也尝试过使用查询,但是使用这个记分器也会遇到同样的问题

我曾考虑过做单独的查询——一个是“那个”和搜索词,另一个是“那个”或搜索词——但如果用户输入两个以上的搜索词,这将需要很多查询。例如,如果我搜索“高级业务解决方案”,我需要这样的查询来覆盖所有基础:

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

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

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


例如,包含“业务”一词20次且从未提及“促销”一词的文档得分高于仅包含“业务”和“促销”一次的文档。这和你看到的行为一致吗?

是的,这和我看到的行为一致。然而,一个同时匹配“促销”和“业务”一次的文档不应该比只匹配“业务”一次的文档得分更高吗?我看到这两种情况下返回的排序分数完全相同,这似乎是错误的。嘿!我希望你做得很好,因为它已经四年了,所以我希望你在那个时候明白了;那么你的解决方案是什么?因为我想按以下方式分类;第一优先级:“高级业务解决方案”三个字,顺序相同;第二优先顺序:这三个词可以任意顺序出现,但必须连续出现;第三优先级:所有这三个单词必须以任何顺序出现在整个文档中;第四优先级:这些词中的任何一个都可能出现在文档中