Skip to content

docs: add comprehensive join feature documentation#3551

Open
qdequele wants to merge 25 commits intomainfrom
docs/add-join-feature-documentation
Open

docs: add comprehensive join feature documentation#3551
qdequele wants to merge 25 commits intomainfrom
docs/add-join-feature-documentation

Conversation

@qdequele
Copy link
Copy Markdown
Member

@qdequele qdequele commented Apr 10, 2026

Summary

Add comprehensive documentation for Meilisearch's join feature (based on PR #6314), covering:

  • Defining relationships between documents across indices (one-to-one, one-to-many, many-to-many)
  • Using foreign filters to filter search results by properties of related documents
  • Performance benefits of joins for reducing data duplication

Note: This documentation was written with the assistance of AI (Claude) and supervised and reviewed by @quentindequelen.

Changes

New documentation pages:

  • capabilities/indexing/joins/define_index_relationships.mdx — Complete guide to joins: why, how, relationship types, updates, data integrity, and cleanup strategies
  • capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx — Using foreign filters to filter by joined data with hard limits
  • capabilities/filtering_sorting_faceting/advanced/precise_filtering_array_items.mdx — Precise AND-logic filtering across array relationships
  • capabilities/security/advanced/rbac_with_joins.mdx — Role-based access control using joins and tenant tokens

Updated pages:

  • capabilities/indexing/advanced/indexing_best_practices.mdx — Added section on using joins to reduce data duplication
  • .code-samples.meilisearch.yaml — All curl examples moved to centralized code samples file
  • docs.json — Navigation entries for joins guides

Key Features Documented

  • Foreign key API format: foreignKeys with fieldName and foreignIndexUid, plus filterableAttributes with facetSearch, equality, and comparison settings
  • Hard limit: Foreign filters with >100 matching results return an error (prominently documented with guidance)
  • Relationship types: One-to-one, one-to-many, many-to-many, self-references, and multiple relationships
  • Authorization patterns: Joins enable tenant tokens and RBAC with JavaScript server implementation example
  • Foreign filters: Enable AND logic across array items (film/cast example showing the difference from normal filters)
  • Depth limitation: One level only, cannot nest hydration/filtering chains
  • Orphaned references: Cleanup via delete-by-filter or edit-by-function (Rhai)
  • Data integrity: No referential integrity enforcement

Documentation Quality

  • All pages follow Meilisearch style guide (no em dashes, proper frontmatter, CardGroups for navigation)
  • Curl examples centralized in .code-samples.meilisearch.yaml with snippet imports
  • All internal links verified, no broken links
  • Cross-referenced between joins, filtering, security, and indexing sections

Summary by CodeRabbit

  • Documentation
    • Added comprehensive guides for configuring and using join relationships between indices
    • Documented foreign filters for filtering documents based on related document properties across indices
    • Added guidance on precise filtering with array relationships using AND logic
    • Included documentation for implementing role-based access control using joins and tenant tokens
    • Added code examples demonstrating join configuration and foreign filter syntax
    • Extended existing guides with references to join capabilities

@mintlify
Copy link
Copy Markdown

mintlify bot commented Apr 10, 2026

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
meilisearch-documentation 🟢 Ready View Preview Apr 10, 2026, 5:26 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 10, 2026

📝 Walkthrough

Walkthrough

This pull request introduces comprehensive documentation and code samples for a new "Joins" feature in Meilisearch, enabling relationships between documents across indices. Documentation covers foreign key definitions, filtering joined data, precise array filtering, RBAC implementations, and best practices with corresponding code samples.

Changes

Cohort / File(s) Summary
Git configuration
.gitignore
Added ignore rule for .claude/superpowers directory to prevent local-only paths from being committed.
Core Joins Documentation
capabilities/indexing/joins/define_index_relationships.mdx
New guide explaining how to define relationships between indices via foreign keys, including one-to-one, one-to-many, many-to-many, and self-referential patterns, with sections on limitations and data integrity handling.
Filtering with Joins
capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx, capabilities/filtering_sorting_faceting/advanced/precise_filtering_array_items.mdx
New guides documenting _foreign() filter syntax for querying related documents and explaining AND logic for array relationships, including performance considerations and error handling.
Security with Joins
capabilities/security/advanced/rbac_with_joins.mdx
New page describing RBAC implementation using foreign filters and tenant tokens, with access index schemas, filter construction patterns, and security best practices.
Filter Expression Reference
capabilities/filtering_sorting_faceting/advanced/filter_expression_syntax.mdx
Added _foreign() function documentation to the filter syntax reference with argument definitions and example expressions.
Indexing Best Practices
capabilities/indexing/advanced/indexing_best_practices.mdx
Added section explaining how joins eliminate data duplication with benefits and a reference link to relationship definition guide.
Navigation and Overview Updates
docs.json, capabilities/filtering_sorting_faceting/overview.mdx, capabilities/security/overview.mdx
Updated navigation structure to include new joins documentation pages and added next-steps cards to overview pages linking to foreign filters, array filtering, and RBAC guides.
Code Sample Registry
.code-samples.meilisearch.yaml
Added 22 new code sample entries across joins definition, foreign filtering, and RBAC scenarios for inclusion in documentation pages.
Code Sample Snippets
snippets/generated-code-samples/code_samples_joins_*.mdx (10 files), snippets/generated-code-samples/code_samples_foreign_filter_*.mdx (8 files), snippets/generated-code-samples/code_samples_rbac_*.mdx (2 files)
Added 20 new MDX code snippet files containing cURL examples demonstrating: relationship configuration (one-to-one, one-to-many, many-to-many, self-reference, multiple relationships, updates, removal), foreign filter usage (basic equality, multiple conditions, range, date range, combined with local filters), array filtering logic, certifications/tags/skills filtering, and RBAC-style access control.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 With joins we now can relate,
Foreign keys to designate,
Filter by the friends we keep,
Across indices, connections deep!
Array AND and RBAC too—
Hoppy docs for me and you! 🥕✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: comprehensive documentation for Meilisearch's join feature, covering relationship definitions, foreign filters, array filtering, and RBAC patterns across multiple new guide pages.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/add-join-feature-documentation

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (2)
capabilities/indexing/joins/overview.mdx (1)

45-45: Use "for example" instead of "e.g." per coding guidelines.

Suggested fix
-- You want to **filter by related data** (e.g., find all deals where the company is in the Technology industry)
+- You want to **filter by related data** (for example, find all deals where the company is in the Technology industry)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@capabilities/indexing/joins/overview.mdx` at line 45, The sentence containing
"You want to **filter by related data** (e.g., find all deals where the company
is in the Technology industry)" should use "for example" instead of the
abbreviation "e.g."; update that exact phrase to read "... (for example, find
all deals where the company is in the Technology industry)" so it conforms to
the coding guidelines.
capabilities/indexing/advanced/optimization.mdx (1)

9-9: Use "for example" instead of "e.g." per coding guidelines.

The guidelines prefer spelling out "for example" over abbreviations to keep the text accessible.

Suggested fix
-When you have relational data (e.g., deals, companies, and users), storing full related objects in every document increases index size significantly. Instead, store only the IDs of related documents and use joins to hydrate them at search time.
+When you have relational data (for example, deals, companies, and users), storing full related objects in every document increases index size significantly. Instead, store only the IDs of related documents and use joins to hydrate them at search time.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@capabilities/indexing/advanced/optimization.mdx` at line 9, The sentence
currently uses the abbreviation "e.g." — update the phrase in the sentence that
starts "When you have relational data (e.g., deals, companies, and users)" to
use "for example" instead (e.g., change to "When you have relational data, for
example, deals, companies, and users") so it follows the guideline to spell out
"for example"; ensure punctuation and spacing are adjusted accordingly and
rebuild the doc if needed.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx`:
- Around line 328-330: The Card component's href currently points to
"/capabilities/filtering_sorting_faceting/getting_started/filtering" which is
incorrect; update the Card (the element with title "Filtering basics") so its
href removes the "/filtering" suffix and points to
"/capabilities/filtering_sorting_faceting/getting_started" (the actual
getting_started page).

In `@capabilities/indexing/joins/how_to/define_join_relationships.mdx`:
- Around line 220-226: Clarify the behavior of sending an empty object to the
PATCH /indexes/{uid}/settings/join-configurations endpoint: update the example
and surrounding text to explicitly state whether PATCH with '{}' removes all
join configurations for the specified index (clearing all relationships) or
resets settings to the default state of "no relationships"; mention the exact
endpoint path "PATCH /indexes/deals/settings/join-configurations" and the curl
example shown, and add a short note describing the expected resulting state
(e.g., "all join configurations removed — index will have no relationships" or
"settings reset to defaults") so readers know the outcome.

In `@capabilities/indexing/joins/how_to/hydration_during_search.mdx`:
- Around line 270-271: The sentence in hydration_during_search.mdx saying "no
documented cardinality limits for relationships" is misleading because filtering
has a hard limit of 100 matching documents; update that sentence to explicitly
state that the 100-document limit applies to foreign filters (filtering) and
does not apply to hydration, and add a short cross-reference to the
filtering_by_joined_data.mdx section (the "foreign filters / 100 matching
documents" discussion) so readers aren’t confused about which behavior is
limited. Ensure the new phrasing mentions "100 matching documents for foreign
filters" and clarifies that hydration performance should still be tested but is
not subject to the same documented limit.
- Around line 259-266: The example for the Meilisearch delete-by-filter curl
request uses array-style filter syntax but the endpoint requires the
string-based filter format; update the request body in the curl snippet that
calls "indexes/deals/delete-by-filter" so the "filter" value is a string (e.g.,
"company_id IN [deleted_company_1, deleted_company_2]") instead of an array,
preserving the rest of the curl flags and headers.

---

Nitpick comments:
In `@capabilities/indexing/advanced/optimization.mdx`:
- Line 9: The sentence currently uses the abbreviation "e.g." — update the
phrase in the sentence that starts "When you have relational data (e.g., deals,
companies, and users)" to use "for example" instead (e.g., change to "When you
have relational data, for example, deals, companies, and users") so it follows
the guideline to spell out "for example"; ensure punctuation and spacing are
adjusted accordingly and rebuild the doc if needed.

In `@capabilities/indexing/joins/overview.mdx`:
- Line 45: The sentence containing "You want to **filter by related data**
(e.g., find all deals where the company is in the Technology industry)" should
use "for example" instead of the abbreviation "e.g."; update that exact phrase
to read "... (for example, find all deals where the company is in the Technology
industry)" so it conforms to the coding guidelines.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d7a55a9b-ccb2-437c-9458-e81fe897d4e3

📥 Commits

Reviewing files that changed from the base of the PR and between 249f691 and c173051.

📒 Files selected for processing (7)
  • .gitignore
  • capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx
  • capabilities/indexing/advanced/optimization.mdx
  • capabilities/indexing/joins/how_to/define_join_relationships.mdx
  • capabilities/indexing/joins/how_to/hydration_during_search.mdx
  • capabilities/indexing/joins/overview.mdx
  • docs.json

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx (1)

328-330: ⚠️ Potential issue | 🟡 Minor

Fix unresolved broken Card link in “Filtering basics.”

The href still points to /getting_started/filtering, which does not match the documented target page path and breaks navigation.

Suggested fix
-  <Card title="Filtering basics" href="/capabilities/filtering_sorting_faceting/getting_started/filtering">
+  <Card title="Filtering basics" href="/capabilities/filtering_sorting_faceting/getting_started">
     Return to basic filtering guide
   </Card>

Based on learnings: “When adding or moving content, update or add links from related pages so users can find it”.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx`
around lines 328 - 330, The Card component at "Card title=\"Filtering basics\""
has a broken href pointing to
"/capabilities/filtering_sorting_faceting/getting_started/filtering"; update the
href on that Card in filtering_by_joined_data.mdx to the correct documented path
(e.g., "/capabilities/filtering_sorting_faceting/getting_started/filtering") or
the appropriate relative path so the link resolves and navigation works; ensure
the href string exactly matches the target page slug used elsewhere in the docs.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In
`@capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx`:
- Around line 328-330: The Card component at "Card title=\"Filtering basics\""
has a broken href pointing to
"/capabilities/filtering_sorting_faceting/getting_started/filtering"; update the
href on that Card in filtering_by_joined_data.mdx to the correct documented path
(e.g., "/capabilities/filtering_sorting_faceting/getting_started/filtering") or
the appropriate relative path so the link resolves and navigation works; ensure
the href string exactly matches the target page slug used elsewhere in the docs.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 41c7660c-3429-41a2-8ac8-31685f71dc98

📥 Commits

Reviewing files that changed from the base of the PR and between c173051 and 38c00f2.

📒 Files selected for processing (1)
  • capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx (1)

274-276: ⚠️ Potential issue | 🟡 Minor

Fix broken link to filtering basics page.

The href points to /capabilities/filtering_sorting_faceting/getting_started/filtering, but the actual file is capabilities/filtering_sorting_faceting/getting_started.mdx. Remove the /filtering suffix.

🔗 Proposed fix
-  <Card title="Filtering basics" href="/capabilities/filtering_sorting_faceting/getting_started/filtering">
+  <Card title="Filtering basics" href="/capabilities/filtering_sorting_faceting/getting_started">
     Return to basic filtering guide
   </Card>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx`
around lines 274 - 276, Update the Card component's href so it points to the
actual getting_started page: change the href value on the Card with title
"Filtering basics" from
"/capabilities/filtering_sorting_faceting/getting_started/filtering" to
"/capabilities/filtering_sorting_faceting/getting_started" (remove the trailing
"/filtering") so the link resolves to
capabilities/filtering_sorting_faceting/getting_started.mdx.
🧹 Nitpick comments (1)
capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx (1)

100-100: Consider more direct phrasing.

The phrase "a specific one" could be more concrete. Consider "a specific company" for clarity.

✏️ Optional rewording
-Filter deals where the company is a specific one:
+Filter deals where the company is a specific company:

Or more concisely:

-Filter deals where the company is a specific one:
+Filter deals by a specific company:
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx`
at line 100, Replace the vague phrase "Filter deals where the company is a
specific one:" with a clearer, more direct wording such as "Filter deals where
the company is a specific company:" or even more concise "Filter deals for a
specific company:" in the document (look for that exact sentence in
filtering_by_joined_data.mdx) to improve clarity.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx`:
- Line 46: Update the heading "## How it works: Normalized vs. Denormalized" to
sentence-style capitalization by capitalizing only the first word and proper
nouns; change it to "## How it works: normalized vs. denormalized" in the file
(look for the heading text "How it works: Normalized vs. Denormalized" to find
the exact spot).

---

Duplicate comments:
In
`@capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx`:
- Around line 274-276: Update the Card component's href so it points to the
actual getting_started page: change the href value on the Card with title
"Filtering basics" from
"/capabilities/filtering_sorting_faceting/getting_started/filtering" to
"/capabilities/filtering_sorting_faceting/getting_started" (remove the trailing
"/filtering") so the link resolves to
capabilities/filtering_sorting_faceting/getting_started.mdx.

---

Nitpick comments:
In
`@capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx`:
- Line 100: Replace the vague phrase "Filter deals where the company is a
specific one:" with a clearer, more direct wording such as "Filter deals where
the company is a specific company:" or even more concise "Filter deals for a
specific company:" in the document (look for that exact sentence in
filtering_by_joined_data.mdx) to improve clarity.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 1b41fd05-e0d2-4101-8ce7-7039573b11bc

📥 Commits

Reviewing files that changed from the base of the PR and between 38c00f2 and b84b0e3.

📒 Files selected for processing (4)
  • capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx
  • capabilities/filtering_sorting_faceting/advanced/precise_filtering_array_items.mdx
  • capabilities/security/advanced/rbac_with_joins.mdx
  • docs.json
✅ Files skipped from review due to trivial changes (3)
  • capabilities/security/advanced/rbac_with_joins.mdx
  • docs.json
  • capabilities/filtering_sorting_faceting/advanced/precise_filtering_array_items.mdx

}'
```

## How it works: Normalized vs. Denormalized
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix heading capitalization to use sentence-style.

The heading capitalizes "Denormalized" but sentence-style capitalization requires only the first word and proper nouns to be capitalized. As per coding guidelines, use sentence-style capitalization in headings.

📝 Proposed fix
-## How it works: Normalized vs. Denormalized
+## How it works: Normalized vs. denormalized
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx`
at line 46, Update the heading "## How it works: Normalized vs. Denormalized" to
sentence-style capitalization by capitalizing only the first word and proper
nouns; change it to "## How it works: normalized vs. denormalized" in the file
(look for the heading text "How it works: Normalized vs. Denormalized" to find
the exact spot).

- Update all curl examples to use correct /settings endpoint
- Change parameters from sourceField/targetIndex/targetField to foreignKeys array
- Add proper filterableAttributes configuration
- Update configuration parameters table with correct fields
- Fix one-to-one, one-to-many, many-to-many examples
- Fix all common patterns (e-commerce, SaaS, marketplace)
- Fix self-references example
- Fix update and remove relationship examples
@qdequele qdequele self-assigned this Apr 10, 2026
@qdequele qdequele marked this pull request as draft April 10, 2026 18:27
…isearch/documentation into docs/add-join-feature-documentation
…cleanup

- Add facetSearch and comparison fields to all filterableAttributes examples
- Remove hydration_during_search page (hydration is automatic)
- Add edit-by-function cleanup strategy for orphaned references
… page

Consolidate joins documentation into capabilities/indexing/joins/define_index_relationships.mdx
and update all internal links.
Replace pseudocode diagram with JSON examples in joins page.
Replace pseudocode server example with JavaScript in RBAC page.
@qdequele qdequele requested a review from ManyTheFish April 10, 2026 19:25
@qdequele qdequele marked this pull request as ready for review April 10, 2026 19:28
@qdequele qdequele requested a review from a team as a code owner April 10, 2026 19:28
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx (1)

47-47: ⚠️ Potential issue | 🟡 Minor

Fix heading to sentence-style capitalization.

At Line 47, update ## How it works: Normalized vs. Denormalized to sentence style: ## How it works: normalized vs. denormalized.

As per coding guidelines, “Use sentence-style capitalization in headings (first word and proper nouns only).”

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx`
at line 47, The heading "## How it works: Normalized vs. Denormalized" should
use sentence-style capitalization; update the heading text to "## How it works:
normalized vs. denormalized" by replacing the existing heading string (## How it
works: Normalized vs. Denormalized) with the corrected sentence-style version in
the document (the heading line beginning with "## How it works:").
🧹 Nitpick comments (1)
capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx (1)

87-87: Shorten this sentence for clarity.

At Line 87, consider: Filter deals from a specific company:

As per coding guidelines, “Prefer short, direct sentences and avoid jargon when a simpler term exists in documentation.”

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx`
at line 87, Replace the sentence "Filter deals where the company is a specific
one:" with the shorter, clearer phrasing "Filter deals from a specific company:"
in the documentation; locate the existing sentence text "Filter deals where the
company is a specific one:" (in filtering_by_joined_data content) and update it
to the suggested wording to follow the guideline preferring short, direct
sentences.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In
`@capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx`:
- Line 47: The heading "## How it works: Normalized vs. Denormalized" should use
sentence-style capitalization; update the heading text to "## How it works:
normalized vs. denormalized" by replacing the existing heading string (## How it
works: Normalized vs. Denormalized) with the corrected sentence-style version in
the document (the heading line beginning with "## How it works:").

---

Nitpick comments:
In
`@capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx`:
- Line 87: Replace the sentence "Filter deals where the company is a specific
one:" with the shorter, clearer phrasing "Filter deals from a specific company:"
in the documentation; locate the existing sentence text "Filter deals where the
company is a specific one:" (in filtering_by_joined_data content) and update it
to the suggested wording to follow the guideline preferring short, direct
sentences.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a23100d0-a835-47ff-bbac-2bb51bc7ec04

📥 Commits

Reviewing files that changed from the base of the PR and between b84b0e3 and d3f68c9.

📒 Files selected for processing (35)
  • .code-samples.meilisearch.yaml
  • .gitignore
  • capabilities/filtering_sorting_faceting/advanced/filter_expression_syntax.mdx
  • capabilities/filtering_sorting_faceting/advanced/filtering_by_joined_data.mdx
  • capabilities/filtering_sorting_faceting/advanced/precise_filtering_array_items.mdx
  • capabilities/filtering_sorting_faceting/overview.mdx
  • capabilities/indexing/advanced/indexing_best_practices.mdx
  • capabilities/indexing/joins/define_index_relationships.mdx
  • capabilities/security/advanced/rbac_with_joins.mdx
  • capabilities/security/overview.mdx
  • docs.json
  • snippets/generated-code-samples/code_samples_foreign_filter_array_and_logic_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_array_or_logic_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_basic_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_certifications_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_combined_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_date_range_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_equality_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_multiple_conditions_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_multiple_equality_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_range_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_skills_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_tags_1.mdx
  • snippets/generated-code-samples/code_samples_joins_define_relationship_1.mdx
  • snippets/generated-code-samples/code_samples_joins_delete_orphaned_1.mdx
  • snippets/generated-code-samples/code_samples_joins_many_to_many_1.mdx
  • snippets/generated-code-samples/code_samples_joins_multiple_relationships_1.mdx
  • snippets/generated-code-samples/code_samples_joins_one_to_many_1.mdx
  • snippets/generated-code-samples/code_samples_joins_one_to_one_1.mdx
  • snippets/generated-code-samples/code_samples_joins_remove_orphaned_ids_1.mdx
  • snippets/generated-code-samples/code_samples_joins_remove_relationships_1.mdx
  • snippets/generated-code-samples/code_samples_joins_self_reference_1.mdx
  • snippets/generated-code-samples/code_samples_joins_update_relationship_1.mdx
  • snippets/generated-code-samples/code_samples_rbac_multi_level_1.mdx
  • snippets/generated-code-samples/code_samples_rbac_search_with_foreign_filter_1.mdx
✅ Files skipped from review due to trivial changes (32)
  • .gitignore
  • snippets/generated-code-samples/code_samples_foreign_filter_array_or_logic_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_tags_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_array_and_logic_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_multiple_equality_1.mdx
  • snippets/generated-code-samples/code_samples_joins_remove_relationships_1.mdx
  • capabilities/filtering_sorting_faceting/overview.mdx
  • capabilities/indexing/advanced/indexing_best_practices.mdx
  • snippets/generated-code-samples/code_samples_joins_delete_orphaned_1.mdx
  • snippets/generated-code-samples/code_samples_rbac_multi_level_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_date_range_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_skills_1.mdx
  • snippets/generated-code-samples/code_samples_joins_update_relationship_1.mdx
  • snippets/generated-code-samples/code_samples_joins_remove_orphaned_ids_1.mdx
  • snippets/generated-code-samples/code_samples_joins_many_to_many_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_equality_1.mdx
  • capabilities/filtering_sorting_faceting/advanced/filter_expression_syntax.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_combined_1.mdx
  • snippets/generated-code-samples/code_samples_joins_one_to_one_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_range_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_certifications_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_basic_1.mdx
  • snippets/generated-code-samples/code_samples_rbac_search_with_foreign_filter_1.mdx
  • snippets/generated-code-samples/code_samples_joins_define_relationship_1.mdx
  • snippets/generated-code-samples/code_samples_foreign_filter_multiple_conditions_1.mdx
  • snippets/generated-code-samples/code_samples_joins_multiple_relationships_1.mdx
  • snippets/generated-code-samples/code_samples_joins_self_reference_1.mdx
  • capabilities/filtering_sorting_faceting/advanced/precise_filtering_array_items.mdx
  • capabilities/security/advanced/rbac_with_joins.mdx
  • snippets/generated-code-samples/code_samples_joins_one_to_many_1.mdx
  • .code-samples.meilisearch.yaml
  • capabilities/indexing/joins/define_index_relationships.mdx
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs.json

Copy link
Copy Markdown
Member

@curquiza curquiza left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for adding code samples 😄

Can you remove the comments in .code-samples.meilisearch.yaml? We use comment above code sample for automations (openAPI code sample generation)

Comment on lines +322 to +330
The following expression returns all deals where the related company is in the Technology industry:

<CodeGroup>

```
_foreign(company, industry = "Technology")
```

</CodeGroup>
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This kind of filter can retrieve a lot of companies, which can lead to an error :S

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants