0

GAE全文搜索,索引中的3个测试数据条目:

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

查询1 :名称:test1
结果1:名称(1),名称(2),名称(3)

查询2 :名称:test1 test2
结果2:名称(2),名称(3)

查询3:名称:test1 test2 test3
结果3:名称(3)

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

目前我看到自己从输入构建查询表达式作为唯一选项(解决方案1:名称:test1 OR test2 OR test3;解决方案2:名称:test1 OR(test1 test2)OR(test2 test3)OR(test1 test3)OR( test1 test2 test3)) 但很难相信这会是建议的方法。

Python 2.5,也使用 SDK 和生产环境进行了测试。

4

2 回答 2

1

API 不会返回那些其他结果,因为它们与查询不匹配。默认操作是“和”而不是“或”——任何理智的搜索工具都应该如此。在现实世界中使用 or 作为默认值会返回大量不相关的结果:当我搜索“应用程序引擎”时,我不想了解应用程序或引擎。

于 2012-11-20T11:16:24.943 回答
0

你的问题对我来说并不完全清楚,但这个查询:

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

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

name:(test1 OR test2 OR test3)

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

查询1 :查询2 name:test1
name:(test1 OR test2)
查询3:name:(test1 OR test2 OR test3)

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

于 2012-11-19T01:41:28.300 回答