我正在尝试使用此查询搜索索引文档,即使项目存在,它也会显示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+"'");
答案 0 :(得分:5)
在Java开发服务器上搜索当前包含空格的原子字段;但我相信它适用于生产,也适用于Python开发服务器。
推荐的查询语法是:[sbu:“Special Bictums Unit”](不带方括号)。
答案 1 :(得分:2)
我不熟悉该平台,但是如果您使用OR
或AND
来搜索多个值,则文档似乎表明括号仅包含在值周围。尝试使用year: 2013
代替year:( 2013 )
,或sbu: "Special Bictums Unit"
代替sbu:("Special Bictums Unit")
。
此外,搜索查询周围似乎还有其他空格。我不怀疑这是一个问题,但你可以在字符串上调用trim()
来返回没有这些的版本,即q = q.trim();
。
来自文档:
如果要搜索包含空格或特殊字符的原子字段,请将值括在引号中。
要搜索&符号,您似乎需要将其括在引号中,例如"&"
。但是,您无法仅搜索原子场的一部分:
原子字段唯一有效的关系运算符是相等运算符。 atom字段的完整内容必须与查询值匹配。
如果要查找其中包含“&”符号的所有字段,则它们必须是文本或HTML字段。据推测,关于特殊字符和引号的规则也适用于这些规则。