Azure search: как создать поисковый индекс сложного типа для BLOB-объектов - PullRequest
0 голосов
/ 16 января 2020

У меня есть хранилище больших двоичных объектов, в котором есть несколько папок, в каждой папке есть несколько PDF-документов. Теперь я хочу создать поисковый индекс azure, который индексирует данные по уровням папок, но включает структуру сложного типа (Collection (edm.ComplexType), которая позволяет мне включать все документы. Таким образом, индекс выглядит так:

{"name": "index",
"fields":
[
    {"name": "id", "type": "Edm.String", "filterable": true, "key": true, "searchable": true, "sortable": true, "facetable": false},
    {"name": "folderName", "type": "Collection(Edm.String)", "searchable": true, "retrievable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "en.microsoft"},
    {"name": "documents", "type": "Collection(Edm.ComplexType)",
    "fields": [
        {"name": "documentName", "type": "Edm.String", "searchable": true, "retrievable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "en.microsoft"},
        {"name": "content", "type": "Edm.String", "searchable": true, "retrievable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft", "synonymMaps": ["synonymsmap"]},
        {"name": "documentType", "type": "Collection(Edm.String)", "searchable": true, "retrievable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "en.microsoft"},
        {"name": "language", "type": "Collection(Edm.String)", "searchable": true, "retrievable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "en.microsoft"}
    ]
    }
]

}

Кто-нибудь знает, как мне подходить к этому? Я создавал и заполнял индексы с помощью rest api.

Я думаю, может быть, мне нужно создать папку Уровень структуры индекса и заполнить детали уровня папки из некоторой sql -таблицы перед заполнением подполей с помощью BLOB-объектов через набор навыков и индексатор и т. д. c?

РЕДАКТИРОВАТЬ: Возможно, мои идеи выше совершенно не верны. Я хочу найти термин и вернуть имена папок на основе совокупной релевантности документов в папках. Не уверен, что это достижимо при поиске или должно быть обработано впоследствии. указатели?

1 Ответ

0 голосов
/ 16 января 2020

Кто-нибудь знает, как мне к этому подойти? Я создавал и заполнял индексы с помощью rest api.

A: Если вы хотите эту структуру, то вы правы. Вам нужно будет создать свой индекс и данные pu sh самостоятельно (остальные API - один из вариантов)

Я думаю, может быть, мне нужно создать структуру индекса на уровне папок и заполнить детали уровня папки из некоторой sql -таблицы перед заполнением подполей с помощью BLOB-объектов через набор навыков и индексатор и т. д. c?

A: Это не Хорошая идея, при поиске с использованием определенного термина, вам нужно будет запросить все возможные индексы и выполнить упорядочение самостоятельно.

Лично я бы создал простую структуру, в которой нет сложных типов:

{
    "name": "index",
    "fields":
    [
        {"name": "id", "type": "Edm.String", "filterable": true, "key": true, "searchable": true, "sortable": true, "facetable": false},
        {"name": "folderName", "type": "Collection(Edm.String)", "searchable": true, "retrievable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "en.microsoft"},
        {"name": "documentName", "type": "Edm.String", "searchable": true, "retrievable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "en.microsoft"},
        {"name": "content", "type": "Edm.String", "searchable": true, "retrievable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft", "synonymMaps": ["synonymsmap"]},
        {"name": "documentType", "type": "Collection(Edm.String)", "searchable": true, "retrievable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "en.microsoft"},
        {"name": "language", "type": "Collection(Edm.String)", "searchable": true, "retrievable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "en.microsoft"}
    ]
}

хотите получить все документы по определенной папке?

search=*&$filter=folderName eq 'abc'

хотите получить определенные документы в определенной папке?

search=*&$filter=folderName eq 'abc' and documentName eq 'x.docx'

хотите получить все документы, которые содержать конкретный термин?

search=mickey mouse&$orderBy=folderName

просто и эффективно

...