3

我正在尝试使用此查询搜索索引文档,即使项目存在,它也会显示 0 个结果。为什么?

描述字段上的关键字搜索和按年份搜索的作品。'sbu' 是一个原子场。

日志

INFO: Searching with query:  year:( 2013  )  sbu:(Special Bictums Unit) 
Oct 31, 2013 8:36:17 PM com.mwv.pic.service.SearchService search
INFO: results.size:0

INFO: Searching with query:  year:( 2013  )  sbu:("Special Bictums Unit") 
INFO: results.size:0

INFO: Searching with query:  sbu:("Special Bictums Unit") 
INFO: results.size:0

INFO: Searching with query:  sbu:"Special Bictums Unit" 
INFO: results.size:0

INFO: Searching with query:  year:( 2013  ) 
INFO: results.size:3

代码

    log.info("Searching with query: " + q);
    try {
        Results<ScoredDocument> results = getIndex().search(q);
        log.info("results.size:"+results.getNumberReturned());

管理控制台中的索引

伊姆古尔

参考

https://developers.google.com/appengine/docs/java/search/query_strings

索引值

Nov 04, 2013 5:55:44 PM com.mwv.pic.service.SearchService indexStudy
INFO: add field sbu:'Special Bictums Unit'

builder.addField(Field.newBuilder().setName("sbu").setAtom(sbu));
log.info("add field sbu:'"+sbu+"'");
4

2 回答 2

5

在 Java 开发服务器上搜索带有空格的 atom 字段目前不起作用;但我相信它可以在生产环境和 Python 开发服务器上运行。

推荐的查询语法是:[sbu:"Special Bictums Unit"](不带方括号)。

于 2013-11-07T01:51:51.173 回答
2

OR我不熟悉该平台,但文档似乎建议仅在您使用或AND搜索多个值时才在值周围包含括号。尝试使用year: 2013代替year:( 2013 ),或sbu: "Special Bictums Unit"代替sbu:("Special Bictums Unit")

此外,您的搜索查询周围似乎还有额外的空格。我不怀疑这是一个问题,但是您可以调用trim()字符串以返回没有这些的版本,即q = q.trim();.

从文档中:

如果您正在搜索包含空格或特殊字符的原子字段,请将值括在引号中。

要搜索 & 符号,您似乎需要将其括在引号中,例如"&". 但是,您不能只搜索 atom 字段的一部分:

原子字段唯一有效的关系运算符是相等运算符。atom 字段的完整内容必须与查询值匹配。

如果要查找其中某处包含与号的所有字段,它们必须是文本或 HTML 字段。大概关于特殊字符和引号的规则也适用于这些。

于 2013-11-03T17:20:36.923 回答