Oro Documentation
Oro Documentation
  • USERS
  • DEVELOPERS
    • Backend Developer Guide
    • Frontend Developer Guide
    • Bundles & Components
    • Web Services API Guide
    • Community Guide
  • CLOUD
  • BLOG
  • ACADEMY
  • Home >
  • Oro Bundles and Components >
  • OroWebsiteSearchBundle >
  • Website Search VS Regular Search
  • Oro Bundles and Components
    • Components
      • Configuration Merger
      • Cumulative Resources
      • System Aware Resolver
    • ActionBundle
    • ActivityBundle
      • Commands
    • ActivityListBundle
    • AddressBundle
    • ApiBundle
    • AssetBundle
      • Commands
    • AttachmentBundle
      • OroAttachmentBundle Configuration
      • Displaying Pictures
      • Generating Image and File URLs
      • Image Placeholder Configuration
    • BatchBundle
    • CacheBundle
    • CalendarBundle
      • Calendar Provider
      • Calendar Context Menu
      • System Calendars
      • Workflow Action
      • Recurring Events
      • UID (Unique Calendar Identifier)
      • Calendar Event Ownership
      • Attendees
    • ChartBundle
    • CookieConsentBundle
    • CommentBundle
    • ConfigBundle
    • CronBundle
    • CurrencyBundle
      • Multi Currency Cell Content Editor
    • DashboardBundle
    • DataAuditBundle
    • DataGridBundle
      • Default Editors
    • DistributionBundle
    • DigitalAssetBundle
    • ElasticSearchBundle
      • Index Agent and Search Engine
      • ElasticSearch Indexes Backup
      • ElasticSearch Configuration
      • Request Builders
      • Troubleshooting
      • Upgrade Website Index to Elasticsearch >=7.7, <8.0
    • EmailBundle
      • Transports
      • Events
      • Emails
      • Email Templates
      • Email Templates Migrations
      • System Mailboxes
      • Email Ownership
      • Sending Emails in Workflows and Actions (Operations)
      • Recipients Autocompletion
      • Public and Private Emails
      • Commands
    • EmbeddedFormBundle
    • EntityBundle
      • EntityModel
      • EntitySelectSearchApiAccessor ⇐ SearchApiAccessor
      • EntityStructureDataProvider
    • EntityConfigBundle
    • EntityExtendBundle
    • EntityMergeBundle
    • EntityPaginationBundle
    • EntitySerializedFieldsBundle
    • FeatureToggleBundle
    • FilterBundle
      • Filter Form Types
      • Grid Extension
    • FormBundle
      • Form Components Overview
      • Update Handler
      • Entity Create or Select Form Type
      • Rich Text Form Type
      • Autocomplete Form Type
      • Text Autocomplete Form Type
      • UI DataBlock Config Overview
      • Expression Editor
      • Client Side Validation
      • InlineEditableViewComponent
      • Index of Supported Editors
        • AbstractRelationEditorView
        • TextEditorView
        • NumberEditorView
        • PercentEditorView
        • DateEditorView
        • DatetimeEditorView
        • SelectEditorView
        • MultiSelectEditorView
        • MultiCheckboxEditorView
        • MultiRelationEditorView
        • RelatedIdRelationEditorView
        • RelatedIdSelectEditorView
      • Search APIs
    • GaufretteBundle
    • GridFSConfigBundle
    • ImapBundle
      • Usage Example
      • Synchronization with IMAP Servers
      • OAuth Providers for Mailboxes
      • User Email Origin Transport
    • ImportExportBundle
      • Commands
    • InstallerBundle
      • Commands
    • IntegrationBundle
    • LayoutBundle
      • Layout Cache
    • LocaleBundle
      • Locale Settings
      • Number Formatting
      • Date and Datetime Formatting
      • Name Formatting
      • Address Formatting
      • Localization
      • Managing Localizations
      • Current Localization
      • Localized Values
      • CLI Commands (LocaleBundle)
    • LoggerBundle
    • MessageQueueBundle
      • Commands
    • MigrationBundle
      • Commands
    • MicrosoftSyncBundle
    • NavigationBundle
      • Commands
    • NoteBundle
    • NotificationBundle
    • OAuth2ServerBundle
    • OrganizationBundle
    • PlatformBundle
      • Commands
    • QueryDesignerBundle
      • Query Designer Configuration
      • Condition Builder Component
    • RedisConfigBundle
      • Configure Redis Servers
      • Configure Application to Use Redis
    • ReportBundle
    • ScopeBundle
    • SearchBundle
      • ORM Search Engine
      • Search Relevance Weight
      • DateTimeFormatter
    • SecurityBundle
    • SegmentBundle
    • SidebarBundle
    • SyncBundle
      • Configuration
      • Client
      • Topics and Handlers
      • Authentication
      • Content Outdating
      • Origin Checking
      • Mediator Handlers
    • TagBundle
      • TagsEditorView
      • TagsView
    • TestFrameworkBundle
      • Additional Doctrine Events
    • ThemeBundle
    • TranslationBundle
      • Commands
    • TwigInspectorBundle
    • UIBundle
      • Action Manager
      • Client Side Navigation
      • Content Providers
      • Dynamic Assets
      • Formatters
      • Scroll Data Customization
      • TWIG Placeholders
      • TWIG Filters
      • Widgets
      • ApiAccessor
      • BaseClass
      • HiddenInitializationView ⇐ BaseView
      • Layout Subtree View
      • LoadMoreCollection
      • Loading Mask View
      • MultiUseResourceManager ⇐ BaseClass
      • PersistentStorage
      • Highlight Text View
      • RouteModel
      • RoutingCollection
      • SearchApiAccessor
      • Viewport Manager
      • Error Handler
      • Input Widgets
      • Items Manager
      • Mediator Handlers
    • WindowsBundle
    • WorkflowBundle
      • Commands
    • DraftBundle
      • How to Use Drafts
      • How to Use Draft ACL
      • How to Use the Draft Filter
      • How to Resolve Draft Conflicts
      • How to Use a Draft Extension
    • CatalogBundle
    • CheckoutBundle
    • CMSBundle
      • Content Widgets
      • WYSIWYG Field
        • How to Add WYSIWYG Field
        • How to Display a WYSIWYG Field
        • How to Change Textarea Field to WYSIWYG Field
        • WYSIWYG Field Validation
      • Content Blocks
      • Create Editor Components
    • ConsentBundle
      • Add the Customer Consents Field to a Form (Example)
      • Add the Agreements Step to a Custom Checkout Based on the Default Checkout Workflow (Example)
      • Add the Agreements Section to a Custom Checkout Based on the Single Page Checkout Workflow (Example)
    • CustomerBundle
    • FrontendBundle
      • Frontend Sessions and Debug Routes
      • Frontend Access
      • Set Up Mass Action in Datagrid
      • Sticky Panel View
      • Dom Relocation Global View
    • InventoryBundle
    • OrderBundle
      • Previously Purchased Products
    • PayPalBundle
    • PromotionBundle
    • PricingBundle
      • Configure Price List Sharding
      • Optimize Website Indexation and Price Recalculation
      • Combined Price List
      • Price Storage
      • Pricing Strategy
      • Commands
    • ProductBundle
      • Product Actions
      • Product Attributes
      • Product Unit Formatting
      • Product Variant Search
      • Related Items
      • Externally Stored Product Images
      • Product Customization Using Layouts
        • Customize Product View Page
        • Customize Product List Page
        • Customize Product Lists
        • Customize Products SKU Validation
    • RedirectBundle
    • SEOBundle
      • Sitemap
      • SEO Meta Fields
    • TaxBundle
    • WebCatalogBundle
    • WebsiteElasticSearchBundle
      • Website ElasticSearch Search Engine
      • Website ElasticSearch Configuration
      • Attributes Boost
      • Request Builders
      • Upgrade Website Index to Elasticsearch >=7.7, <8.0
      • Synonym Management
    • WebsiteSearchBundle
      • Website Search VS Regular Search
      • Website Search Configuration
      • Search Index Structure
      • Console Commands
      • Perform Search
      • Indexation Process
      • Reindexation During Platform Update
      • ORM Search Engine
      • Search Relevance Weight
      • Testing
    • ActivityContactBundle
    • AnalyticsBundle
    • ChannelBundle
    • SalesBundle
    • ApruveBundle
    • AuthorizeNetBundle
    • DotmailerBundle
    • DPDBundle
    • GoogleTagManagerBundle
    • InfinitePayBundle
    • MailchimpBundle
    • MakerBundle
    • PaypalExpressBundle
    • StripeBundle

Website Search VS Regular Search

The main purpose of the website search is to provide the customer with the ability to use search functionality at the application frontend. Website search should be used only at frontend because of its nature - the data is stored by websites (i.e. each website has its own scope in the storage) and some frontend-specific values (like localization) are necessary for the frontend search use cases - e.g. user should have a possibility to search data only using one specific localization.

Data for the website search index is collected and stored by websites and entity types. It means that each entity for each website has its own scope in the storage, and as a consequence, these scopes are independent and can be handled separately. For example, a developer might ask to reindex only specific entity for a specific website, and this change does not affect any other entity at the specified website or any other website data.

Engine data collection is event based, so any bundle can mix its own information to search index. As a consequence, some entities in the index might contain information that is not related directly, but is still valuable to search by related areas.

By design, website indexation supports both synchronous and asynchronous operation. When triggering reindexation, you can define whether it should run in the synchronous or asynchronous mode. During the asynchronous reindexation, the appropriate message is put to the message queue and is processed by the consumer later by reindexing the required scope of entities.

WebsiteSearchBundle VS SearchBundle

OroPlatform already contains a SearchBundle and this chapter describes the difference between SearchBundle and WebsiteSearchBundle.

The first and the main difference is the way index is stored. The website (frontend) index storage is separated from the platform index storage and may be moved to a separate server and thus may be properly scaled.

Next important difference is in the information they control. The platform index handles the backend information (e.g. back-office), and the website index contains information about the frontend (e.g., storefront). As a consequence, platform index is usually smaller and the search and indexation speed is well balanced, while frontend index trades off the indexation speed for a faster search.

Though indexation might be a little slower comparing to backend index, frontend index is more flexible in terms of extendability. It is event based, and there are several events that allow to customize different parts of search and indexation.

Supported Engines

  • ORM
  • ElasticSearch

Related Article

  • WebsiteElasticSearchBundle
Oro Documentation
  • Oro inc
  • OroCommerce
  • OroMarketplace
  • OroCRM
  • OroPlatform
  • Partners
  • Services
  • Events
  • Twitter
  • Terms & conditions
  • Privacy policy
  • Contributor license agreement

@2021 Oro, Inc. All Rights Reserved.

Back to top