Динамическое добавление документа с использованием Document API в Vespa - PullRequest
0 голосов
/ 19 сентября 2018

Я создал класс Searcher в своем приложении, в котором есть несколько документов.В классе Searcher я хочу записать документ в документ определенного типа.Но это не отражается на Веспе.Мой код ниже:

    public Result search(Query query, Execution execution) {

        Result result = execution.search(query);

        DocumentAccess access = DocumentAccess.createDefault();
        DocumentType type = access.getDocumentTypeManager().getDocumentType("location");
        DocumentId id = new DocumentId("id:location:location::4");
        Document document = new Document(type, id);

        document.setFieldValue("token", "qwerty");
        document.setFieldValue("latlong", "12.343,12.4343");
        document.setFieldValue("data_timestamp", "00:00:00 00:00:00");

        // return the result up the chain
        return result;
    }

Здесь я пишу документ в тип местоположения.Мой класс Location.sd:

search location 
{
    document location {
        field token type string {
            indexing: index
        }
        field latlong type string {
            indexing: attribute
        }
        field data_timestamp type string {
            indexing: attribute
        }
    }
    fieldset default {
        fields: token
    }
}

Когда я хочу получить документ, используя: http://localhost:8080/document/v1/location/location/docid/4

I got the result:
{
    "id": "id:location:location::4",
    "pathId": "/document/v1/location/location/docid/4"
}

Я должен получить следующий вывод:

{
    "fields": {
        "token": "qwerty",
        "latlong": "12.343,12.4343",
        "data_timestamp": "00:00:00 00:00:00"
    },
    "id": "id:location:location::4",
    "pathId": "/document/v1/location/location/docid/4"
}

Пожалуйста, помогите мне понять, что я делаю неправильно или что-то упустил.

1 Ответ

0 голосов
/ 19 сентября 2018

Если вы хотите добавить документы из поисковика, вам следует перенести создание экземпляра DocumentAccess в конструктор поисковика, чтобы избежать создания нового экземпляра для каждого поискового запроса.

При создании экземпляра документа данные в Vespa не сохраняются, вам необходимо отправить его, создав сеанс из экземпляра DocumentAccess.Смотрите полные примеры здесь https://docs.vespa.ai/documentation/document-api-guide.html

...