JavaGoogleSearchAPI:将所有数据存储数据加载到DocumentBuilder中,以便对所有记录进行全文搜索
我一直在https://developers.google.com/appengine/docs/java/search/overview上关注有关谷歌搜索API的教程。我找到的信息非常清楚地说明了如何构建文档并将其加载到索引中。我不确定的是如何将数据存储数据加载到文档中
我试图实现的是对几个字段进行简单的%LIKE%查询。例如,我正在一个音乐图书馆工作。如果用户键入“glori”,那么我想使用搜索API返回标题中某处带有“glori”的所有实体。我已经通过将搜索文本添加到“\uFFFD”实现了“开始于”的解决方案,但是,我发现这还不够。我的用户将是新手,如果他们不必像传统搜索那样选择一个领域,这也会很有帮助。因此,全文搜索似乎是解决方案
以下是我的问题:
我的数据存储中的每条记录都应该是文档吗?还是将所有记录合并到一个文档中?我有一个非常固定的数据存储大小,只有1000条记录。有人能提供一个正确方法的例子吗
我想将整个数据存储实体(只有8个字段)作为实体类型的一个Iterable返回。我们是否指定了需要返回的每个字段?这个例子只是说:
for(ScoredDocument ScoredDocument:结果){ //工艺文件 }
有没有人能举例说明存储文档中的内容?这正是我们输入的内容,还是您必须再次识别每个字段?或者是处理返回数据存储实体的ScoredDocument的示例
如果有人能帮我填补这些空白,我将不胜感激
谢谢你和我一起看这个
# 1 楼答案
为了实现这一点,您需要“标记”您的记录名称,GAE提供了全文搜索,因此为了让您获得部分匹配,您需要为每个记录添加部分匹配,以便:
如果你的记录名为“荣耀”,你应该为“G”、“Gl”、“Glo”、“Glor”、“y”、“ry”、“ory”、“lory”添加标记
下面是我用来提供部分搜索结果的一个非常基本的实现(仅适用于“开始于”而不是“结束于”)
是。您甚至可以将文档ID与实体的数据存储ID进行匹配,以便快速匹配。(也可以将其作为单独的字段添加)
您需要在文档中存储实体的ID,这样当搜索返回一组文档时,您只需检索具有这些ID的所有实体
文档返回存储在其中的所有字段,以及大量数据,如评分、id等。在您的案例中,“处理”包括从文档中获取实体id
如果你确定你的记录不会超过1000条,你可以在搜索索引中存储所有信息。请记住,索引并不是为此而设计的,在扩展时将面临一些严重的限制,而数据存储显然没有