gpt4 book ai didi

java - 谷歌搜索 API : Loading all datastore data into document builder for full text search on all records

转载 作者:行者123 更新时间:2023-12-02 05:00:46 26 4
gpt4 key购买 nike

我一直在关注 https://developers.google.com/appengine/docs/java/search/overview 上有关 Google 搜索 API 的教程。 .我找到的信息非常清楚如何构建文档并将其加载到索引中。我不确定的是如何将数据存储数据加载到文档中。

我试图实现的是对几个字段的简单 %LIKE% 查询。例如,我正在研究音乐库。如果用户输入“glory”,那么我想使用搜索 API 返回标题中某处带有“glory”的所有实体。我已经通过将搜索文本添加到“\uFFFD”来实现“开始于”的解决方法,但是,我发现这还不够。我的用户将是非常新手,如果他们不必像在传统搜索中那样选择一个字段,那也会很有帮助。所以全文搜索似乎是解决方案。

这是我的问题:

  1. 我的数据存储中的每条记录都应该是一个文档吗?还是把所有的记录放到一个文件中?我有一个非常固定的数据存储大小,只有 1000 条记录。任何人都可以提供正确方法的示例吗?

  2. 我想将整个数据存储区实体(它只有 8 个字段)作为我的实体类型的 Iterable 返回。我们是否指定了需要返回的每个字段?这个例子只是说:

    for (ScoredDocument scoredDocument : results) {//处理 scoredDocument

有没有人举例说明存储文档的结果?是我们输入的内容还是您必须再次识别每个字段?或者处理 ScoredDocument 返回数据存储实体的示例?

如果有人能帮我填补这些空白,我将不胜感激。

谢谢你和我一起看这个。

最佳答案

What am trying to achieve is a simple %LIKE% query on a few fields

为了实现这一点,您需要“标记化”您的记录名称,GAE 提供了全文搜索,因此为了获得部分匹配,您需要为每条记录添加部分匹配,因此:

如果您的记录名称是“Glory”,您应该添加“G”、“Gl”、“Glo”、“Glor”、“y”、“ry”、“ory”、“lory”的标记

这是我用来提供部分搜索结果的非常基本的实现(仅适用于“开始于”而不实现“结束于”)

public void addField(String name, String value, boolean tokenize) {
addField(Field.newBuilder().setName(name).setText(value));
if (tokenize) {
for (int i = startTokenIndex ; i < value.length() ;i++) {
addField(Field.newBuilder().setName("token" + (lastTokenIndex++))
.setText(value.substring(0, i)));
}

}
}

Should each record in my datastore be a document?

。您甚至可以将文档 ID 与实体的数据存储区 ID 进行匹配以进行快速匹配。 (或者您可以将其添加为单独的字段)

I would like to return the entire datastore entity (it's only 8 fields) as an Iterable of the type of my entity. Do we specify each field we need to return?

您需要将实体的 ID 存储在文档中,这样当您的搜索返回一组文档时,您只需检索具有这些 ID 的所有实体。

Does anybody have an example of what comes out of the stored document? Is it exactly what we put in or must you identify each field again? Or an example of processes a ScoredDocument returning a datastore entities?

文档返回您存储在其中的所有字段,以及许多数据,如评分、ID 等。您的案例中的“处理”将包括从文档中获取实体 ID。

如果您确定您的记录不会增长到 1000 以上,您几乎可以将所有内容存储在您的搜索索引中。请记住,索引不是为此而设计的,并且在扩展时会面临一些严重的限制,而数据存储显然不会。

关于java - 谷歌搜索 API : Loading all datastore data into document builder for full text search on all records,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16516848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com