为什么Google App Engine搜索仅返回“最佳”结果?

时间:2012-11-18 22:34:07

标签: google-app-engine full-text-search

GAE full text search,索引中的3个测试数据条目:

(1)名称:TEST1
name(2):test1 test2
name(3):test1 test2 test3

query1:name:test1
result1:name(1),name(2),name(3)

query2:name:test1 test2
result2:name(2),name(3)

query3:name:test1 test2 test3
result3:name(3)

我想从所有3个条目的所有3个查询中取回(并按相关性对它们进行排序)。我已经检查了所有的search.QueryOptions设置,但是我无法达到预期的结果。

目前我看到自己从输入构建一个查询表达式作为唯一选项(solution1:name:test1或test2 OR test3; solution2:name:test1 OR(test1 test2)OR(test2 test3)OR(test1 test3) )或(test1 test2 test3))但很难相信这是建议的方法。

Python 2.5,使用SDK和生产测试。

2 个答案:

答案 0 :(得分:1)

API不会返回其他结果,因为它们与查询不匹配。默认操作是'和'不是'或' - 因为它应该适用于任何理智的搜索工具。在现实世界中使用或作为默认情况将返回大量不相关的结果:当我搜索“app engine”时,我不想知道应用程序或引擎。

答案 1 :(得分:0)

我的问题并不完全清楚,但是这个问题:

(name: test1 OR (test1 test2) OR (test1 OR test2 OR test3))

没有意义。这就是你所需要的:

name:(test1 OR test2 OR test3)

从您列出的查询示例中我认为您所遗漏的只是所有3个查询中值之间的OR运算符:

query1:name:test1
query2:name:(test1 OR test2)
query3:name:(test1 OR test2 OR test3)

并且您将获得所有3个查询的所有3个文档。