LabelStore
インストールのレビュー済みの答えを保存するポート。1 つのエンティティまたはファセットへの判定で、元の文書から写し取ったもの。
ポート: LabelStore。
indx_interfaces.protocols
で、indx_interfaces.labels
のモデルの上に宣言しています(ADR-0076)。
Label は、レーンが返した 1 つの答えへの人の判定です。approved、正しい値を添えた corrected、
rejected のいずれかです。対象は EntityTarget(ブロック、そのページと枠、エンティティのラベル、文字範囲、
表記)か FacetTarget(文書、ページ、チャンクのいずれかのブロック、ファセット、答えたラベル)です。文書の
ダイジェストと名前を持ち、任意で、埋めるタイプとフィールド、レビュー担当者が名乗った名前を持ちます。
class LabelStore(Protocol): def put(self, owner: OwnerId, label: Label) -> None: ... def get(self, owner: OwnerId, label_id: LabelId) -> Label | None: ... def list( self, owner: OwnerId, *, digest: SourceDigest | None = None, type_id: TypeId | None = None ) -> tuple[Label, ...]: ... def delete(self, owner: OwnerId, label_id: LabelId) -> bool: ...SchemaStore の隣の 4 つ目のストアのポートです。ポートは集約ごとに
分けるからです。ラベルが指す先を写し取るのは、読んだ元の保存された文書がクッキーのもので失効する一方、ラベルは
失効しないからです。失効しないので、purge はありません。同梱するバックエンドは memory、sqlite、
postgres の 3 つで、INDX_LABEL_STORE が名指します。
- オーナー。 どのメソッドも最初に
OwnerIdを取り、オーナーをまたぐものはありません。 - 同一性。 ラベルの ID はダイジェストと対象から導くので、同じ答えへの 2 つ目の判定の
putは 1 つ目を 置き換えます。 - 冪等性。 ない ID の
deleteはFalseです。 - 絞り込み。
listはdigest、type_id、またはその両方で絞り込みます。どちらもなければオーナーの ラベルをすべて返します。 - 順序。
listはダイジェスト、次に ID の順でラベルを返します。 - 検証。 モデルは、
correctedでない訂正と、訂正のないcorrectedを拒みます。type_idとfieldが 保存されたタイプとそのフィールドを名指すかを確かめるのは、ストアではなくサーバーです。
tests/unit/test_store_conformance.py
が、インストール済みのすべてのバックエンドをこの規則に従わせます。