Search Engine
Search Engine - AmmoSearch.com Project
Introduction
AmmoSearch is a price comparison shopping search engine with a back-end that processes product feeds in real-time. Vendors provide primary feeds in XML format for initial product
offerings, descriptions, page links, and images, along with a secondary feed for pricing and inventory data. Given the highly competitive ammunition market, prices change
continuously.
This platform allows shoppers to find the best deals on ammunition. Registered users can save their search queries for quick access during future visits and benefit from search alerts
that notify them immediately if a price changes. Since the search engine relies on vendor data, a system is in place for shoppers to report issues like incorrect pricing or descriptions.
Vendors have their own portal where they can manage their profile, feed properties, and other information.
Technology
This search engine runs on the Microsoft .NET stack, utilizing IIS and SQL Server. An ETL console app runs in the background to download, parse, and load product feeds into the
database. Two independent instances are scheduled: one runs every 8 hours for primary feeds, and the other every 10 minutes for secondary feeds. All data is processed via SQL
transactions.
The front end is built using ASP.NET Web Forms, JavaScript, JQuery, Bootstrap, HTML, CSS, SignalR, WebAPI, and C#. The back end leverages .NET Framework, WCF, SignalR,
SQL, WebAPI, and C#.
Features
Rapid drill-down search selectors for each ammunition category
Context-aware drill-downs displaying only available items based on previous selections
Fuzzy search box for free-form search parameter entry
User portal for profile management, saved searches, and alerts
Vendor portal for profile management and product feed settings
Complete feed specification documentation
Admin portal for managing user and vendor profiles
Chat system for user support
Automated product/pricing feed reading and parsing system
Operations
Front Page:
Top Menu:
Home link: Navigates to the home page
Info dropdown:
Privacy Policy link: Navigates to the privacy policy page
Website Terms link: Navigates to the terms & conditions page
About Us link: Navigates to the about us page
Contact Us link: Navigates to the contact us page
Vendor Info link: Navigates to the vendor information page
News link: Navigates to industry news and information
Register link: For registering new users and vendors
Login link: For logging in and accessing user, vendor, and admin portals
Search Block:
Each category in the accordion includes:
Multi-column drill-down selectors - Users make selections (minimum of 1) for each subsection of ammunition, with each selection determining options in the following selector.
Search Phrase: A free-form text box for entering search parameters (optional)
"Find {ammo type} Ammo" button: Initiates the search
"Clear Search" button: Resets all selectors and clears the Search Phrase
"Show only in-stock items" checkbox: Removes out-of-stock items from the results when checked
Results Block:
Data grid: Displays search results in a sortable, pageable grid.
Product links: Links in the Product column take the user directly to the vendor's website product page. Internally, link clicks are recorded to track traffic.
Info buttons: Clicking the info button in the right-most column opens a pop-out window with product details and an image.
Paging control: Allows simple page navigation
Info pop-out: Displays product details and image, along with feedback reporting options.
"Visit Website" button: Navigates the user to the vendor's website product page.
"Report Problem" button: Launches the "Report Product Listing Problems" pop-out window.
"Problem(s) Found" dropdown: Allows selection of one or more problems
"Other Problem" text box: For typing in a problem not listed in the dropdown
"Send Report" button: Sends a problem report to the administrator
User Selections Block (may be hidden):
This block appears above the Search Block when a user is logged in, specifically for registered users.
"My Searches" button: Opens a small pop-out window to add or remove saved searches.
"Save or Modify your Search"
"Name your new Search" field: Allows entry of a search name
"Change/Delete an existing search" field: Users can select a search to change or delete. The name field above is populated with the selection if the name is being changed.
"My Alerts" button: Opens a small pop-out window to add or remove saved alerts.
"Save or modify your alerts"
"Search Name" dropdown: Allows selection of previously saved searches to assign an alert to
"Low Alert Price" spinner: Allows entry of a price threshold for the selected search, triggering an alert if the price meets or goes below the specified amount.
"Alert to" checkboxes: Users can select Email or SMS/Phone notifications
"Alert Period" dropdown: Sets the alert interval
"Create New Alert" button: Adds a new alert to the queue in the list below
Existing Alerts list: Displays all saved searches with alerts
"Saved Searches" dropdown: Allows the user to select a previously saved search.
Account Pages:
Manage Account: This section allows users or vendors to manage their account details.
"Change Password" button: For changing the account password
"Edit Profile" button: Opens the profile editing page
Services (Vendors Only):
"Manage Product Feeds" button: Opens a window for managing product feeds
"Feed Processing Results" button: Opens a window displaying information about feed processing, including warnings and errors
"Traffic Statistics" button: Opens a window displaying traffic statistics from the website (e.g., number of clicks, products clicked on)
Manage Product Feeds (Vendors Only):
Website URL: Vendors enter their main website URL here
Feed URL Path: Vendors enter the URL path where their feed files are located
Main Feed Filename: Name of the primary feed file containing detailed product listings in XML format
Short Feed Filename: Name of the secondary feed file containing price and stock listings in XML format
Enable Product Feed Parsing: Checkbox to enable or disable the processing of product feeds
Feed Notification Email: Alternate email address for receiving notifications (e.g., failure notices)
Enable Notification Emails: Checkbox to enable or disable email notifications
"Update" button: Saves the changes made
"Your AmmoSearch Logo Code": Generates code for a logo with tracking that vendors can place on their website. A banner is provided for embedding on the vendor's website.
Feed Specification:
This page provides complete product feed specifications for vendors.
Main & Short XML Feed Specification:
Required: Indicates whether an element is required
Element Name: Name of the XML element (e.g., product_id, product_name)
Attribute: XML element attribute
Data Type: XML data type (e.g., string, decimal)
Length: Length of the string
CDATA: Indicates if the element content should be wrapped in CDATA
Description/Usage: Describes the element's purpose and usage
Example(s): Provides examples of usage
Example Feeds:
This page displays example feeds and their related XSD schemas.
Administrator Pages:
User Manager: Manages all users registered on the website.
Total registered users: Displays the count of all registered users
Total users online: Displays the count of all current user sessions (excluding admin)
Search by Letter links: Filters users alphabetically. Clicking a letter displays only users whose name begins with that letter.
Roles checkboxes: Filters accounts by specified roles
"Show only Users not assigned to roles" checkbox: Displays only accounts with no assigned roles
"Email Contains" textbox: Filters users by email or partial email match
User data grid: Displays user information
Blue & Red buttons: For editing and deleting accounts respectively
Confirmed checkbox: Indicates whether the user's email is confirmed (via confirmation email link)
Lockouts: Displays the status of accounts that may be locked out due to failed login attempts
Roles checkboxes: For assigning one or more roles to a particular user
Details buttons: User details and vendor details buttons open the appropriate page for editing user details.
User Details Page: Allows editing of all basic user (and vendor) information.
Vendor Edit Form (Vendor Details Page): Allows editing of all necessary vendor information, including feed links and status.
Projects in Solution:
This screen capture indicates all the projects used for the AmmoSearch search engine:
App Core (libraries): Contains all shared libraries for use by all other projects
Feed Publisher (console): Publishes feeds to the website and works in conjunction with the Feed Reader
Feed Reader (console): Grabs vendor feed files from their respective URLs, parses for errors, reports errors, formats data, then posts to SQL database
RSS Feed Reader (console): Grabs RSS data from industry news websites, parses/formats it, then posts it to the website (database)
Search Service (API): Provides services that are called from the website and console apps
Search Website (Web): Handles the main website pages
Security
AmmoSearch utilizes ASP.NET DNFW for authentication and authorization throughout the website. Data transfer can be done either remotely via VPN or locally. The system uses
standard TLS 1.3 security, and XSS & SQL injection attack surfaces are mitigated. User account information is encrypted in the database (salted), and payment information is not
stored anywhere. IIS uses a restricted access account for data connections and only accepts TLS 1.2 connections at a minimum. Console and API utilities also use restricted access
accounts.