{"id":219762,"date":"2025-01-17T18:10:28","date_gmt":"2025-01-17T18:10:28","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ai-search\/"},"modified":"2026-08-24T08:11:03","modified_gmt":"2026-08-24T08:11:03","slug":"ai-search","status":"publish","type":"plugin","link":"https:\/\/ko.wordpress.org\/plugins\/ai-search\/","author":16829483,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.29.0","stable_tag":"1.29.0","tested":"7.1","requires":"","requires_php":"8.0","requires_plugins":null,"header_name":"AI Search - Intelligent Search for WooCommerce and WordPress","header_author":"Samuel Silva","header_description":"Replaces the default search with an intelligent search system.","assets_banners_color":"c6b6c6","last_updated":"2026-08-24 08:11:03","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wp-search.ai","header_author_uri":"https:\/\/samuelsilva.pt","rating":5,"author_block_rating":0,"active_installs":90,"downloads":6007,"num_ratings":5,"support_threads":2,"support_threads_resolved":2,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0":{"tag":"1.0","author":"samuelsilvapt","date":"2025-01-27 00:29:33"},"1.1":{"tag":"1.1","author":"samuelsilvapt","date":"2025-01-27 00:29:33"},"1.11.0":{"tag":"1.11.0","author":"samuelsilvapt","date":"2026-01-07 12:18:57"},"1.12.0":{"tag":"1.12.0","author":"samuelsilvapt","date":"2026-01-17 15:31:17"},"1.13.0":{"tag":"1.13.0","author":"samuelsilvapt","date":"2026-01-19 12:21:55"},"1.14.0":{"tag":"1.14.0","author":"samuelsilvapt","date":"2026-01-20 19:26:18"},"1.15.0":{"tag":"1.15.0","author":"samuelsilvapt","date":"2026-01-23 17:11:59"},"1.16.0":{"tag":"1.16.0","author":"samuelsilvapt","date":"2026-01-26 14:56:16"},"1.17.0":{"tag":"1.17.0","author":"samuelsilvapt","date":"2026-02-01 20:42:17"},"1.18.0":{"tag":"1.18.0","author":"samuelsilvapt","date":"2026-02-04 13:14:52"},"1.19.0":{"tag":"1.19.0","author":"samuelsilvapt","date":"2026-02-09 22:11:58"},"1.2":{"tag":"1.2","author":"samuelsilvapt","date":"2025-02-04 10:14:51"},"1.20.0":{"tag":"1.20.0","author":"samuelsilvapt","date":"2026-02-12 18:24:10"},"1.21.0":{"tag":"1.21.0","author":"samuelsilvapt","date":"2026-02-18 11:45:32"},"1.22.0":{"tag":"1.22.0","author":"samuelsilvapt","date":"2026-03-02 15:13:31"},"1.23.0":{"tag":"1.23.0","author":"samuelsilvapt","date":"2026-04-18 19:13:21"},"1.23.1":{"tag":"1.23.1","author":"samuelsilvapt","date":"2026-04-29 22:08:16"},"1.24.0":{"tag":"1.24.0","author":"samuelsilvapt","date":"2026-04-29 22:33:15"},"1.25.0":{"tag":"1.25.0","author":"samuelsilvapt","date":"2026-05-16 10:48:01"},"1.27.0":{"tag":"1.27.0","author":"samuelsilvapt","date":"2026-08-21 11:09:06"},"1.28.0":{"tag":"1.28.0","author":"samuelsilvapt","date":"2026-08-22 16:18:46"},"1.28.1":{"tag":"1.28.1","author":"samuelsilvapt","date":"2026-08-22 17:08:29"},"1.29.0":{"tag":"1.29.0","author":"samuelsilvapt","date":"2026-08-24 08:11:03"},"1.3":{"tag":"1.3","author":"samuelsilvapt","date":"2025-03-10 21:46:37"},"1.4":{"tag":"1.4","author":"samuelsilvapt","date":"2025-03-12 12:23:26"},"1.5":{"tag":"1.5","author":"samuelsilvapt","date":"2025-06-12 14:35:47"},"1.6":{"tag":"1.6","author":"samuelsilvapt","date":"2025-07-11 11:12:31"},"1.6.1":{"tag":"1.6.1","author":"samuelsilvapt","date":"2025-07-11 14:10:27"},"1.6.2":{"tag":"1.6.2","author":"samuelsilvapt","date":"2025-07-11 14:28:57"},"1.6.3":{"tag":"1.6.3","author":"samuelsilvapt","date":"2025-07-12 09:23:17"},"1.7.0":{"tag":"1.7.0","author":"samuelsilvapt","date":"2025-10-24 10:09:12"},"1.7.1":{"tag":"1.7.1","author":"samuelsilvapt","date":"2025-10-24 13:27:07"},"1.8.0":{"tag":"1.8.0","author":"samuelsilvapt","date":"2025-10-27 19:23:53"},"1.9.0":{"tag":"1.9.0","author":"samuelsilvapt","date":"2025-12-05 22:15:07"},"1.9.1":{"tag":"1.9.1","author":"samuelsilvapt","date":"2025-12-05 22:52:36"},"1.9.2":{"tag":"1.9.2","author":"samuelsilvapt","date":"2025-12-13 17:40:12"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":5},"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3253612,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544-500.png":{"filename":"banner-1544-500.png","revision":3660867,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3660867,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772-250.png":{"filename":"banner-772-250.png","revision":3660867,"resolution":"772x250","location":"assets","locale":"","width":1544,"height":500}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0","1.1","1.11.0","1.12.0","1.13.0","1.14.0","1.15.0","1.16.0","1.17.0","1.18.0","1.19.0","1.2","1.20.0","1.21.0","1.22.0","1.23.0","1.23.1","1.24.0","1.25.0","1.27.0","1.28.0","1.28.1","1.29.0","1.3","1.4","1.5","1.6","1.6.1","1.6.2","1.6.3","1.7.0","1.7.1","1.8.0","1.9.0","1.9.1","1.9.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3660867,"resolution":"1","location":"assets","locale":"","width":3704,"height":2152},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3660867,"resolution":"2","location":"assets","locale":"","width":2362,"height":1856}},"screenshots":{"1":"AI Search Dashboard - Configure search settings and similarity threshold","2":"AI Search results on the frontend - Badge showing similarity score (visible to admins only by default)"}},"plugin_section":[],"plugin_tags":[2353,282,5183,140844,286],"plugin_category":[45],"plugin_contributors":[167360],"plugin_business_model":[],"class_list":["post-219762","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-ecommerce","plugin_tags-product-search","plugin_tags-semantic-search","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-samuelsilvapt","plugin_committers-samuelsilvapt"],"banners":{"banner":"https:\/\/ps.w.org\/ai-search\/assets\/banner-772-250.png?rev=3660867","banner_2x":"https:\/\/ps.w.org\/ai-search\/assets\/banner-1544-500.png?rev=3660867","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ai-search\/assets\/icon-256x256.png?rev=3253612","icon_2x":"https:\/\/ps.w.org\/ai-search\/assets\/icon-256x256.png?rev=3253612","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ai-search\/assets\/screenshot-1.png?rev=3660867","caption":"AI Search Dashboard - Configure search settings and similarity threshold"},{"src":"https:\/\/ps.w.org\/ai-search\/assets\/screenshot-2.png?rev=3660867","caption":"AI Search results on the frontend - Badge showing similarity score (visible to admins only by default)"}],"raw_content":"<!--section=description-->\n<p><strong>AI Search for WooCommerce<\/strong> makes your store's search actually work. When a shopper types \"summer blue dress\" they find your \"light cotton navy sundress\". When they search \"headphones for running\" they find your sweat-resistant wireless earbuds \u2014 even if the word \"running\" isn't anywhere in the product description.<\/p>\n\n<p>Default WooCommerce search matches keywords. AI Search matches <em>meaning<\/em>. It reads your entire product catalog \u2014 titles, descriptions, SKUs, categories, tags, and attributes \u2014 and converts each product into a vector that captures what it actually is. When a shopper searches, the plugin finds the closest matches by meaning, not by exact word overlap.<\/p>\n\n<p>The result: fewer empty search pages, more products surfaced for long-tail queries, and shoppers who find what they wanted on the first try.<\/p>\n\n<p><strong>Try it live before installing:<\/strong> <a href=\"https:\/\/wp-search.ai\/demos\/\">wp-search.ai\/demos<\/a> runs this exact plugin on a sample store. Type your own search - or a SKU - and see the traditional results next to the AI results, side by side.<\/p>\n\n<p>Also works with blog posts, pages, and any custom post type \u2014 so you can use the same intelligent search across your whole site.<\/p>\n\n<h3>Traditional Results First, AI Results After<\/h3>\n\n<p>AI Search <strong>never replaces the results your search already finds \u2014 it adds to them<\/strong>. Every search runs in three steps, in this order:<\/p>\n\n<ol>\n<li><strong>Exact matches<\/strong> \u2014 a query that matches a product SKU or an exact product title is always the first result.<\/li>\n<li><strong>Traditional keyword results<\/strong> \u2014 everything WordPress and WooCommerce search would normally find (products literally containing your search words) comes next, ranked by keyword relevance instead of publish date.<\/li>\n<li><strong>AI results<\/strong> \u2014 only <em>below<\/em> those, semantic matches are added: products that mean the same thing even when they use different words.<\/li>\n<\/ol>\n\n<p>So if a shopper searches for something that literally exists in your store, they see exactly what they would see without the plugin \u2014 just better ordered. The AI layer only ever <em>extends<\/em> the results with products the traditional search missed. Installing AI Search will not change or hide the results your customers already find today.<\/p>\n\n<h3>Key Features<\/h3>\n\n<ul>\n<li><strong>WooCommerce Product Search<\/strong>: Full product catalog indexing \u2014 titles, short and long descriptions, SKUs, categories, tags, and product attributes (size, color, material, etc.). Pre-configured defaults so you can go live in minutes.<\/li>\n<li><strong>Understands Shoppers, Not Just Keywords<\/strong>: Semantic search means \"cozy winter sweater\" matches your \"merino wool pullover\". Long-tail and descriptive queries stop returning empty pages.<\/li>\n<li><strong>Traditional Results Are Never Lost<\/strong>: Keyword matches always rank above AI suggestions \u2014 the AI extends your search results, it never replaces them.<\/li>\n<li><strong>Cross-Lingual &amp; Multilingual<\/strong>: Works with 100+ languages \u2014 Portuguese, Spanish, French, German, Greek, Arabic, Chinese, Japanese, and more. International stores get consistent search quality across every language, and an English query can still match content in other languages.<\/li>\n<li><strong>SKU &amp; Attribute Matching<\/strong>: Customers can search by SKU fragments, attribute values, or technical specs and still find the right product.<\/li>\n<li><strong>Smart Fallback System<\/strong>: 4-tier fallback ensures shoppers never hit a zero-result page \u2014 if AI search finds nothing, standard WordPress search takes over automatically.<\/li>\n<li><strong>No OpenAI Account Required<\/strong>: Uses our free embedding service (up to 10,000 embeddings per site). Works out of the box for most stores.<\/li>\n<li><strong>Bring Your Own API Key<\/strong>: Optionally use your own OpenAI API key for unlimited indexing.<\/li>\n<li><strong>Bulk Embedding Generation<\/strong>: Index your entire existing catalog in one click, filtered by post type or category.<\/li>\n<li><strong>Quota Management<\/strong>: Real-time monitoring of AI service usage and limits (v1.14.0+).<\/li>\n<li><strong>Works Beyond Products Too<\/strong>: Same intelligent search for blog posts, pages, and any public custom post type.<\/li>\n<li><strong>ACF Compatible<\/strong>: Index Advanced Custom Fields data for deeper product metadata search.<\/li>\n<li><strong>Tunable Similarity Threshold<\/strong>: Fine-tune how strict or broad search results are, per store.<\/li>\n<li><strong>Intelligent Caching<\/strong>: Fast results with automatic local caching.<\/li>\n<\/ul>\n\n<h3>Perfect For<\/h3>\n\n<ul>\n<li><strong>WooCommerce stores<\/strong> with large or varied product catalogs<\/li>\n<li><strong>Fashion &amp; apparel<\/strong> stores where shoppers describe products in their own words (\"something flowy for summer\")<\/li>\n<li><strong>Electronics &amp; home goods<\/strong> stores with complex technical specs and model numbers<\/li>\n<li><strong>Books, media, and marketplaces<\/strong> with thousands of titles<\/li>\n<li><strong>International stores<\/strong> selling in multiple languages<\/li>\n<li>Membership sites, knowledge bases, and directories \u2014 any content-heavy WordPress site<\/li>\n<\/ul>\n\n<h3>How It Works<\/h3>\n\n<ol>\n<li>Each product in your WooCommerce catalog is converted into a numeric \"meaning fingerprint\" (called an embedding) that captures its title, description, SKU, categories, tags, and attributes.<\/li>\n<li>When a shopper searches, the plugin first pins exact SKU\/title matches, then lists every traditional keyword match (what your search finds today), ranked by relevance.<\/li>\n<li>The query then gets its own meaning fingerprint, which is compared against every product's fingerprint.<\/li>\n<li>The closest semantic matches are appended below the traditional results \u2014 extra products the keyword search missed, never replacements for it.<\/li>\n<li>If nothing at all is found, a multi-tier fallback kicks in so shoppers never hit an empty results page.<\/li>\n<\/ol>\n\n<p>Embeddings are generated automatically when you publish or update products \u2014 no manual work after setup.<\/p>\n\n<h3>Learn More<\/h3>\n\n<p>Visit our website for documentation, demos, and examples:\n<strong>https:\/\/wp-search.ai\/<\/strong><\/p>\n\n<p>Browse technical documentation, see live demos of the plugin in action, and learn best practices for AI-powered search.<\/p>\n\n<h3>Usage<\/h3>\n\n<ul>\n<li>Your existing WooCommerce search form (and the default WordPress search) are automatically upgraded \u2014 no theme or template changes required.<\/li>\n<li>Manage settings, switch providers, and monitor quota via the <strong>AI Search<\/strong> menu in your WordPress admin.<\/li>\n<\/ul>\n\n<h3>External Service<\/h3>\n\n<p>This plugin connects with:<\/p>\n\n<ul>\n<li>OpenAI Embeddings API: https:\/\/platform.openai.com\/docs\/guides\/embeddings<\/li>\n<li>Custom Node.js Embedding Service<\/li>\n<\/ul>\n\n<p>Please read more here:\nhttps:\/\/platform.openai.com\/docs\/guides\/embeddings<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>The setup wizard launches automatically. If you have WooCommerce active, it will detect your store and pre-select the most useful product fields (short description, categories, attributes, SKU).<\/li>\n<li>Run <strong>Bulk Embedding Generation<\/strong> from <strong>AI Search &gt; Generate Embeddings<\/strong> to index your existing product catalog (or posts\/pages).<\/li>\n<li>That's it \u2014 new and updated products get indexed automatically from this point on.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20there%20a%20live%20demo%3F\"><h3>Is there a live demo?<\/h3><\/dt>\n<dd><p>Yes. <a href=\"https:\/\/wp-search.ai\/demos\/\">wp-search.ai\/demos<\/a> runs the real plugin on a sample clothing store. Type any query - your own words, an exact product name, or a SKU - and the page shows traditional search results and AI Search results side by side, each result labeled by tier. Nothing there is staged.<\/p><\/dd>\n<dt id=\"will%20installing%20ai%20search%20change%20the%20results%20my%20visitors%20already%20get%3F\"><h3>Will installing AI Search change the results my visitors already get?<\/h3><\/dt>\n<dd><p>No. Results your search already finds are kept and shown first: exact SKU\/title matches, then every traditional keyword match (ranked by relevance instead of date). AI results are only <em>added below<\/em> them \u2014 extra products the keyword search missed. If a shopper searches for something that literally exists on your site, they will still find it, in the same or a better position.<\/p><\/dd>\n<dt id=\"how%20do%20%22term%20embeddings%22%20improve%20search%3F%20%28v1.26.0%29\"><h3>How do \"term embeddings\" improve search? (v1.26.0)<\/h3><\/dt>\n<dd><p>On top of the per-post embedding, AI Search now generates one embedding per taxonomy term \u2014 every category, tag, and WooCommerce attribute term. At search time, each post's score gets an additive boost from its best-matching term. The practical effect: shoppers searching \"trainers\" surface products tagged \"Sneakers\" even when no product description contains the word \"trainers\". You can manage this on the new <strong>Term Embeddings<\/strong> tab (opt out of specific taxonomies, bulk-generate embeddings for existing terms) and tune the boost strength via the slider on <strong>Search Configuration<\/strong>.<\/p>\n\n<p><strong>Cost note<\/strong>: each unique taxonomy term consumes one embedding from your quota. A typical WooCommerce store has 50\u2013500 unique terms, so the one-time cost is small \u2014 and because terms are shared across all your products, you embed each one only once. If you have an unusually large taxonomy (e.g., thousands of free-text tags), you can disable that specific taxonomy on the new tab.<\/p><\/dd>\n<dt id=\"can%20developers%20customize%20behavior%20via%20php%20hooks%3F\"><h3>Can developers customize behavior via PHP hooks?<\/h3><\/dt>\n<dd><p>Yes. As of v1.25.0, AI Search exposes the following filters for developers:<\/p>\n\n<ul>\n<li><code>ai_search_embedding_content<\/code> \u2014 Modify the text sent to the AI provider when generating embeddings. Useful for injecting taxonomy names, stripping boilerplate, or normalizing terminology.<\/li>\n<li><code>ai_search_should_generate_embedding<\/code> \u2014 Return false to skip embedding generation for specific posts. Useful for excluding drafts in certain categories or low-content posts.<\/li>\n<li><code>ai_search_query_before_embedding<\/code> \u2014 Rewrite the user's search query before it's embedded. Useful for synonym expansion, spell correction, or locale-specific normalization.<\/li>\n<li><code>ai_search_similarity_threshold<\/code> \u2014 Override the similarity threshold per-query or per-post-type. Useful for stricter matching on products vs. looser on blog content.<\/li>\n<li><code>ai_search_results<\/code> \u2014 Re-rank or filter the final search results. Useful for boosting in-stock products, hiding restricted content, or injecting pinned results.<\/li>\n<li><code>ai_search_term_embedding_content<\/code> \u2014 <em>(v1.26.0)<\/em> Customize the text fed to the AI provider when embedding a taxonomy term. Useful for injecting parent-term names, synonym hints, or stripping boilerplate from term descriptions.<\/li>\n<li><code>ai_search_exact_matches<\/code> \u2014 <em>(v1.27.0)<\/em> Add or remove post IDs pinned to the top of results as exact lexical matches (SKU \/ title) before AI ranking. Useful for EAN\/GTIN, supplier references, or brand codes.<\/li>\n<\/ul>\n\n<p>Plus the existing <code>ai_search_searchable_post_types<\/code> filter. Code examples are included in the inline PHPDoc above each filter in the plugin source.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20woocommerce%20products%3F\"><h3>Does this work with WooCommerce products?<\/h3><\/dt>\n<dd><p>Yes \u2014 WooCommerce is the primary use case. The plugin indexes product titles, short and long descriptions, SKUs, categories, tags, and product attributes. When you activate the plugin on a store with WooCommerce, the setup wizard automatically prioritizes products and pre-selects the most useful product fields.<\/p><\/dd>\n<dt id=\"can%20shoppers%20search%20by%20sku%3F\"><h3>Can shoppers search by SKU?<\/h3><\/dt>\n<dd><p>Yes \u2014 and as of v1.27.0 an exact or prefix SKU match is always returned first, regardless of the AI similarity score. Random-looking codes like <code>B08M5XDKFG<\/code> carry no meaning for an embedding model, so before the semantic step the plugin checks the query against product SKUs (including variation SKUs, which resolve to their parent product) and against exact product titles. Matches are pinned to the top with a green \"Exact Match\" badge for editors. Partial SKUs work when the query is a single token of 4+ characters (<code>WOO-HOOD<\/code> finds <code>WOO-HOODIE<\/code>, <code>WOO-HOODIE-LOGO<\/code>, \u2026). SKUs remain part of the embedding too, so mixed queries (\"black shoes SKU-2024\") still work.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%20product%20attributes%3F\"><h3>Does it work with WooCommerce product attributes?<\/h3><\/dt>\n<dd><p>Yes. Attributes like size, color, material, and any custom attributes you configure are indexed as part of the product's searchable content. Shoppers can search by attribute values (\"large cotton\") and the plugin will match products with those attributes.<\/p><\/dd>\n<dt id=\"does%20it%20index%20product%20variations%3F\"><h3>Does it index product variations?<\/h3><\/dt>\n<dd><p>The plugin indexes the parent product (including its attributes and description). Individual variation-level descriptions aren't separately indexed, but since attributes like size and color are included in the parent's embedding, searches for variation-specific terms still surface the right product.<\/p><\/dd>\n<dt id=\"what%20is%20required%20to%20use%20ai%20search%3F\"><h3>What is required to use AI Search?<\/h3><\/dt>\n<dd><p>Nothing if you use our free AI Search Service (up to 10,000 embeddings per site). If you want unlimited indexing, you can use your own OpenAI API key.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20embedding%20api%20fails%3F\"><h3>What happens if the embedding API fails?<\/h3><\/dt>\n<dd><p>The plugin logs the error and falls back to WordPress default search automatically, so shoppers never hit a broken search page.<\/p><\/dd>\n<dt id=\"when%20are%20embeddings%20generated%3F\"><h3>When are embeddings generated?<\/h3><\/dt>\n<dd><p>Embeddings are automatically generated when you publish a post, page, or custom post type. You can also regenerate them manually from the post editor or bulk generate them from the settings page.<\/p><\/dd>\n<dt id=\"will%20this%20slow%20down%20my%20website%3F\"><h3>Will this slow down my website?<\/h3><\/dt>\n<dd><p>No. Embeddings are generated in the background when content is published, not during searches. Search results are fast because they use pre-computed embeddings stored in your database.<\/p><\/dd>\n<dt id=\"how%20many%20embeddings%20can%20i%20create%20with%20the%20free%20service%3F\"><h3>How many embeddings can I create with the free service?<\/h3><\/dt>\n<dd><p>The free AI Search Service provides 10,000 embeddings per site. For unlimited usage, you can use your own OpenAI API key.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20custom%20post%20types%3F\"><h3>Does this work with custom post types?<\/h3><\/dt>\n<dd><p>Yes! AI Search works with any public custom post type. You can select which post types to make searchable in the setup wizard or settings page.<\/p><\/dd>\n<dt id=\"can%20i%20index%20custom%20fields%20%28acf%2C%20meta%20boxes%29%3F\"><h3>Can I index custom fields (ACF, meta boxes)?<\/h3><\/dt>\n<dd><p>Yes! You can configure custom post meta fields to be included in the search index. This is perfect for ACF fields, custom taxonomies, and other metadata.<\/p><\/dd>\n<dt id=\"what%20is%20the%20similarity%20threshold%3F\"><h3>What is the similarity threshold?<\/h3><\/dt>\n<dd><p>The similarity threshold (0.1-1.0, displayed as 10%-100%) determines how closely search results must match the query. Higher values (70%-80%) give more precise results; lower values (30%-50%) return broader matches. The default is 30%, which is a good starting point for most stores \u2014 adjust down if shoppers see too few results, adjust up if results feel loosely related.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20ai%20search%20finds%20no%20results%3F\"><h3>What happens if AI Search finds no results?<\/h3><\/dt>\n<dd><p>AI Search has a smart 4-tier fallback system that ensures users always get results, falling back to WordPress default search if needed.<\/p><\/dd>\n<dt id=\"how%20do%20i%20change%20my%20ai%20provider%3F\"><h3>How do I change my AI provider?<\/h3><\/dt>\n<dd><p>Go to AI Search &gt; General Settings and switch between the free AI Search Service or your own OpenAI API key.<\/p><\/dd>\n<dt id=\"is%20my%20search%20data%20private%3F\"><h3>Is my search data private?<\/h3><\/dt>\n<dd><p>Yes. Search queries are processed through the embedding API but are not stored externally. All search results and embeddings are stored in your WordPress database.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.29.0<\/h4>\n\n<ul>\n<li><strong>Simpler, native admin<\/strong>: the settings screens were rebuilt with WordPress core components - no more gradient panels, traffic-light sliders or invented color schemes. Clean white panels, standard notices, one clear explanation per setting.<\/li>\n<li><strong>Five tabs instead of eight<\/strong>: General (provider, connection and quota), Search (threshold and term boost), Indexing (post and term embeddings together), Content (custom fields and WooCommerce fields together), Tools (cache). Old tab links keep working.<\/li>\n<li><strong>Translations included<\/strong>: full Spanish (es_ES), Portuguese (pt_PT) and French (fr_FR) translations of the admin interface ship with the plugin.<\/li>\n<li><strong>Index status at a glance<\/strong>: the Indexing tab now shows, per content type, how many published items are indexed and how many still need AI sync - e.g. \"Products: 14 of 18 indexed, 4 need sync\".<\/li>\n<li><strong>Honest threshold copy<\/strong>: the similarity threshold now explains what it actually does - it only affects AI results; exact and keyword matches always appear. The fake \"interactive demo\" with invented products was removed; a note points to the real threshold tester on your site's search pages.<\/li>\n<\/ul>\n\n<h4>1.28.1<\/h4>\n\n<ul>\n<li><strong>Fix: secondary search queries now get the full tiered treatment.<\/strong> The plugin read the searched terms from the global query, so a <code>WP_Query<\/code> with its own <code>s<\/code> parameter (blocks, widgets, AJAX search handlers) was processed with the wrong - usually empty - terms: no exact-match pinning, no AI results, and a wasted embedding request for an empty string. The terms now come from the query being filtered.<\/li>\n<\/ul>\n\n<h4>1.28.0<\/h4>\n\n<ul>\n<li><strong>Keyword Matches Always Shown Before AI Extras<\/strong>: WordPress' own search results are no longer discarded when the semantic search finds something. Results now come in three tiers: exact SKU\/title matches first, then every product that literally contains the search words (ordered by keyword relevance: title &gt; content &gt; taxonomies &gt; custom fields, not by date), then semantic extras below. Fixes cases where a product named \"Beanie with Logo\" vanished from a \"beanie\" search while a loosely-related product appeared.<\/li>\n<li>Editors see a blue \"Keyword Match\" badge on tier-two results; they carry the <code>ai-search-lexical-match<\/code> CSS class.<\/li>\n<li><strong>Accurate Result Counts<\/strong>: The \"Showing all N results\" count shown by themes now matches the number of results the plugin actually returns.<\/li>\n<li><strong>Simpler Settings: Hybrid Search Removed<\/strong>: The Hybrid Search toggle and balance slider are gone. Keyword matching no longer needs configuring \u2014 it is always on, as the guaranteed tier above semantic results. Existing <code>ai_search_hybrid_enabled<\/code> \/ <code>ai_search_hybrid_balance<\/code> options are simply ignored. One less thing to tune.<\/li>\n<\/ul>\n\n<h4>1.27.0<\/h4>\n\n<ul>\n<li><strong>Exact SKU &amp; Title Matches Always First<\/strong>: Before running the semantic search, the plugin now checks the query against WooCommerce SKUs (exact and prefix, variations resolve to their parent product) and exact post titles. Matches are pinned to the top of results with score 1.0 \u2014 no setting, always on. Fixes searches for random-looking codes such as Amazon ASINs that scored below the similarity threshold. Editors see a green \"Exact Match\" badge; results carry the <code>ai-search-exact-match<\/code> CSS class.<\/li>\n<li><strong>New Developer Hook<\/strong>: <code>ai_search_exact_matches<\/code> lets you add (EAN, supplier reference) or remove pinned exact matches.<\/li>\n<li><strong>Visible Errors in Bulk Generation<\/strong>: The Generate Embeddings tab now reports how many items succeeded or failed and <em>why<\/em> \u2014 connection errors (cURL), rejected token, exhausted quota, service outage, unpublished or empty content \u2014 instead of always saying \"generated\". Provider-level errors stop the run early so a bad token doesn't burn the whole batch. The setup wizard shows the real error instead of always reporting \"Daily quota hit\", and the per-post \"Regenerate\" button reports the reason too. <code>AI_Search::generate_embedding()<\/code> now returns <code>true<\/code> or a <code>WP_Error<\/code>.<\/li>\n<li><strong>Respects Search Visibility<\/strong>: Products marked hidden \/ excluded from search in WooCommerce catalog visibility no longer appear in AI results, exact matches, or fallback tiers. Post types registered with <code>exclude_from_search<\/code> are skipped when no post type is specified.<\/li>\n<li><strong>Fix: site-wide search never used AI ranking<\/strong>: WordPress resolves a search without an explicit post type to <code>post_type=any<\/code>; the plugin used that literal string in its SQL, so only searches scoped to a post type (e.g. the WooCommerce product search form) got semantic results \u2014 the generic site search always fell back to WordPress default matching. <code>any<\/code> is now expanded to all searchable public post types.<\/li>\n<li>Tested up to WordPress 7.0.<\/li>\n<\/ul>\n\n<h4>1.26.0<\/h4>\n\n<ul>\n<li><strong>Per-Term Semantic Embeddings<\/strong>: AI Search now generates a separate embedding for each taxonomy term (category, tag, WooCommerce attribute term) in addition to the post-level embedding. At search time each post gets an additive boost from its best-matching term \u2014 so a shopper searching \"trainers\" surfaces products tagged \"Sneakers\" even when no description mentions trainers. Default ON for WooCommerce stores.<\/li>\n<li><strong>New \"Term Embeddings\" Settings Tab<\/strong>: Toggle the feature, opt out of specific taxonomies (useful for huge tag taxonomies), and bulk-generate embeddings for terms that don't have one yet. A status box shows X of Y terms indexed at a glance.<\/li>\n<li><strong>Term Boost Slider<\/strong>: New 0\u201350% slider on the Search Configuration tab controls how much a matching term boosts a post's score. Default 20% \u2014 enough to widen recall without overpromoting tag-only matches.<\/li>\n<li><strong>New Developer Hook<\/strong>: <code>ai_search_term_embedding_content<\/code> lets you customize the text fed to the AI provider when embedding a term (parallel to <code>ai_search_embedding_content<\/code> for posts).<\/li>\n<\/ul>\n\n<h4>1.25.0<\/h4>\n\n<ul>\n<li><strong>Developer Extensibility<\/strong>: Five new PHP filter hooks for customizing search behavior without forking \u2014 <code>ai_search_embedding_content<\/code>, <code>ai_search_should_generate_embedding<\/code>, <code>ai_search_query_before_embedding<\/code>, <code>ai_search_similarity_threshold<\/code>, and <code>ai_search_results<\/code>. See the new \"Developer Hooks\" FAQ for details.<\/li>\n<\/ul>\n\n<h4>1.24.0<\/h4>\n\n<ul>\n<li><strong>Token Recovery<\/strong>: When the AI Search Service no longer recognises your site's token (e.g. after a service-side reset), the General settings tab now offers a one-click \"Reconnect with new token\" button. Quotas and usage limits are preserved \u2014 only the credential rotates. The follow-up connection check runs automatically so you see the live status immediately.<\/li>\n<\/ul>\n\n<h4>1.23.1<\/h4>\n\n<ul>\n<li><strong>Bug Fix \u2014 Setup Wizard Final Step<\/strong>: Fixed a \"The link you followed has expired\" error that blocked some users at the last step of the setup wizard on their first run. The CSRF nonce on the final-step form was failing verification in a subset of install scenarios; removed in favour of the capability check that was already in place.<\/li>\n<\/ul>\n\n<h4>1.23.0<\/h4>\n\n<ul>\n<li><strong>WooCommerce-First Experience<\/strong>: Repositioned for WooCommerce stores with tailored onboarding, product-priority defaults in the setup wizard, and a \"store detected\" welcome banner<\/li>\n<li><strong>Multilingual Search Documented<\/strong>: Confirmed and documented support for 100+ languages including Greek, Arabic, Chinese, Japanese, and all European languages (semantic search path)<\/li>\n<li><strong>Bug Fix \u2014 PHP 8 DivisionByZeroError<\/strong>: Fixed a crash in cosine similarity when a stored embedding had zero magnitude (sqrt returns float 0.0, strict <code>=== 0<\/code> comparison was bypassing the guard)<\/li>\n<li><strong>Test Suite Added<\/strong>: First-time PHPUnit-based test harness (unit + integration suites) covering similarity math and the external service client<\/li>\n<li><strong>Documentation Fix<\/strong>: Corrected similarity threshold range in FAQ (0.1-1.0 since v1.18.0, previously documented as 0.5-1.0)<\/li>\n<\/ul>\n\n<h4>1.22.0<\/h4>\n\n<ul>\n<li><strong>Domain Mismatch Detection<\/strong>: Admin warning when site domain differs from the registered AI Search Service domain<\/li>\n<li><strong>One-Click Reconnect<\/strong>: Button to easily reconnect and get a new token for the current domain<\/li>\n<li><strong>Automatic Origin Tracking<\/strong>: Plugin now stores the registered origin for future mismatch detection<\/li>\n<li><strong>Improved Migration Support<\/strong>: Better handling when moving sites between domains (staging to production, domain changes)<\/li>\n<\/ul>\n\n<h4>1.21.0<\/h4>\n\n<ul>\n<li><strong>Reusable CPT\/Taxonomy Selector Component<\/strong>: New shared UI component for Post Type, Taxonomy, and Term selection<\/li>\n<li><strong>Clear Embeddings by Post Type\/Taxonomy<\/strong>: Delete embeddings for specific post types or taxonomy terms (not just all at once)<\/li>\n<li><strong>Improved Cache &amp; Clean Tab<\/strong>: Added filtered clearing option alongside existing \"Clear All\" functionality<\/li>\n<li><strong>UI Component Architecture<\/strong>: Introduced <code>components\/<\/code> folder for reusable admin UI elements<\/li>\n<li><strong>Code Refactoring<\/strong>: Reduced code duplication between Generate Embeddings and Cache &amp; Clean tabs<\/li>\n<li><strong>Taxonomy\/Category Filter for Embeddings<\/strong>: Generate embeddings filtered by specific categories or taxonomies (not just post types)<\/li>\n<li><strong>Dynamic Taxonomy Loading<\/strong>: Taxonomies and terms load dynamically via AJAX based on selected post type<\/li>\n<li><strong>Improved Generate Embeddings UI<\/strong>: Cleaner form layout with loading states and better UX<\/li>\n<\/ul>\n\n<h4>1.20.0<\/h4>\n\n<ul>\n<li><strong>Performance Optimization for Large Sites<\/strong>: Major improvements for sites with thousands of posts<\/li>\n<li><strong>Batched Processing<\/strong>: Posts are now processed in batches of 100 for optimal memory usage<\/li>\n<li><strong>Search Results Caching<\/strong>: Results are cached for 5 minutes to speed up repeated queries<\/li>\n<li><strong>Direct Database Queries<\/strong>: Optimized queries that fetch only necessary data<\/li>\n<li><strong>Memory Management<\/strong>: Automatic cleanup between batches to prevent memory exhaustion<\/li>\n<li><strong>New Default Threshold<\/strong>: Changed default similarity threshold from 65% to 30% for better out-of-box results<\/li>\n<li><strong>Improved Threshold Guidelines<\/strong>: Updated slider recommendations (30% now recommended as starting point)<\/li>\n<\/ul>\n\n<h4>1.19.0<\/h4>\n\n<ul>\n<li><strong>Dedicated Admin Menu<\/strong>: AI Search now has its own top-level menu in WordPress admin (no longer under Settings)<\/li>\n<li><strong>Improved Menu Navigation<\/strong>: Settings pages and Setup Wizard now correctly highlight the AI Search menu<\/li>\n<li><strong>Contact the Author<\/strong>: New submenu link to contact the plugin author directly<\/li>\n<li><strong>URL Structure Update<\/strong>: All admin URLs now use <code>admin.php?page=ai-search<\/code> for better WordPress integration<\/li>\n<\/ul>\n\n<h4>1.18.0<\/h4>\n\n<ul>\n<li><strong>REST API Settings Endpoint<\/strong>: New public endpoint at <code>\/wp-json\/ai-search\/v1\/settings<\/code> exposing plugin configuration for debugging (no sensitive data)<\/li>\n<li><strong>OpenAI Model Selection<\/strong>: Choose between <code>text-embedding-3-small<\/code> (default, recommended) and <code>text-embedding-3-large<\/code> when using your own OpenAI API key<\/li>\n<li><strong>Extended Threshold Range<\/strong>: Similarity threshold now supports 10-100% (previously 50-100%) for broader search flexibility<\/li>\n<li><strong>Updated Default Model<\/strong>: OpenAI embeddings now use <code>text-embedding-3-small<\/code> instead of the older <code>text-embedding-ada-002<\/code><\/li>\n<\/ul>\n\n<h4>1.17.0<\/h4>\n\n<ul>\n<li><strong>Hybrid Search<\/strong>: New feature combining AI semantic search with traditional keyword matching for improved accuracy<\/li>\n<li><strong>Search Configuration Tab<\/strong>: Dedicated settings tab for fine-tuning search behavior (similarity threshold and hybrid search)<\/li>\n<li><strong>Configurable Balance Slider<\/strong>: Adjust the weight between AI semantic search (0-100%) and keyword matching<\/li>\n<li><strong>Enhanced Keyword Matching<\/strong>: Keyword scoring now includes custom fields and WooCommerce fields configured in settings<\/li>\n<li><strong>Reusable UI Components<\/strong>: New slider components for threshold and hybrid balance configuration<\/li>\n<li><strong>Improved Search Accuracy<\/strong>: Better ranking when exact keyword matches are important alongside semantic understanding<\/li>\n<\/ul>\n\n<h4>1.16.0<\/h4>\n\n<ul>\n<li><strong>Automatic Embedding Generation on Publish<\/strong>: Embeddings now generated automatically when posts\/pages\/custom post types are published<\/li>\n<li><strong>Improved Performance<\/strong>: Removed automatic embedding generation on every save - now only triggers on publish status transition<\/li>\n<li><strong>Universal CPT Support<\/strong>: Automatic embedding generation works seamlessly for all post types without additional configuration<\/li>\n<li><strong>Post Meta Box Enhancement<\/strong>: Content quality indicator and embedding preview available for published posts only<\/li>\n<li><strong>Better Resource Management<\/strong>: Reduced API calls by only generating embeddings when content is ready for public viewing<\/li>\n<li><strong>Setup Wizard Updates<\/strong>: Final step now includes similarity threshold configuration with better default value (0.65)<\/li>\n<li><strong>Admin Interface Improvements<\/strong>: Post Meta Box now provides clear status messages for unpublished posts<\/li>\n<li><strong>Case-Insensitive Search<\/strong>: All content and search queries converted to lowercase for consistent matching<\/li>\n<li><strong>Enhanced Similarity Display<\/strong>: AI Search badges now show percentage similarity scores on search results (editors\/admins only)<\/li>\n<li><strong>Fallback Search Improvements<\/strong>: Fallback results now calculate and display actual similarity scores instead of showing 0%<\/li>\n<li><strong>Threshold Filtering on Fallback<\/strong>: All fallback search strategies now respect the similarity threshold setting<\/li>\n<li><strong>CSS Classes for Results<\/strong>: Added <code>ai-search-similarity-{percentage}<\/code> CSS classes to all search results for custom styling<\/li>\n<li><strong>Frontend Threshold Slider<\/strong>: Admins can test different threshold values directly on search results pages<\/li>\n<\/ul>\n\n<h4>1.15.0<\/h4>\n\n<ul>\n<li><strong>Enhanced Setup Wizard<\/strong>: Expanded from 3 to 4 steps with new custom fields configuration<\/li>\n<li><strong>Custom Fields Step<\/strong>: New dedicated wizard step for choosing searchable content<\/li>\n<li><strong>Content Richness Emphasis<\/strong>: Added messaging that \"richer content = better search results\"<\/li>\n<li><strong>Post Type Selection<\/strong>: Choose which post types (posts, pages, custom types) are searchable during setup<\/li>\n<li><strong>WooCommerce Field Configuration<\/strong>: Configure product fields (SKU, categories, tags, attributes) in wizard<\/li>\n<li><strong>Streamlined Admin Menu<\/strong>: Simplified submenu to General Settings, Setup Wizard, and Support Forum link<\/li>\n<li><strong>Direct Support Access<\/strong>: Added WordPress.org support forum link directly in admin menu<\/li>\n<li><strong>Improved Quota Display<\/strong>: Quota tab now shows relevant message for users with their own OpenAI API key<\/li>\n<li><strong>Better Onboarding Flow<\/strong>: Setup wizard now guides users to configure content before generating embeddings<\/li>\n<li><strong>Brazilian Portuguese Translation<\/strong>: Added pt_BR translation file for readme<\/li>\n<\/ul>\n\n<h4>1.14.0<\/h4>\n\n<ul>\n<li><strong>Quota Management Tab<\/strong>: New dedicated tab showing real-time usage statistics from AI Search Service<\/li>\n<li><strong>Usage Monitoring<\/strong>: Visual progress bars displaying total embeddings and daily usage against limits<\/li>\n<li><strong>Quota Status Indicators<\/strong>: Clear status badges showing if quotas are active or exceeded<\/li>\n<li><strong>Manual Refresh<\/strong>: On-demand quota data refresh with intelligent 6-hour caching<\/li>\n<li><strong>Detailed Error Messages<\/strong>: Enhanced error handling with specific API error messages<\/li>\n<li><strong>Last Updated Timestamp<\/strong>: Human-readable \"last updated X ago\" display for quota data<\/li>\n<li><strong>Quota Manager Class<\/strong>: New dedicated controller class for quota management (separation of concerns)<\/li>\n<li><strong>API Integration<\/strong>: Direct integration with <code>\/clients\/quota<\/code> endpoint using Bearer token authentication<\/li>\n<li><strong>Internationalization<\/strong>: All new quota strings fully translatable<\/li>\n<\/ul>\n\n<h4>1.13.0<\/h4>\n\n<ul>\n<li><strong>Top-Level Admin Menu<\/strong>: AI Search moved from Settings submenu to main WordPress admin menu (position 58, before Settings)<\/li>\n<li><strong>Custom Menu Icon<\/strong>: Added plugin icon (SVG) to admin menu<\/li>\n<li><strong>Full i18n Support<\/strong>: All admin settings pages now fully translatable<\/li>\n<li><strong>Improved Admin UX<\/strong>: Better visibility and professional appearance in WordPress admin<\/li>\n<\/ul>\n\n<h4>1.12.0<\/h4>\n\n<ul>\n<li><strong>Automatic Service Registration<\/strong>: Plugin now registers with AI Search Service immediately on activation<\/li>\n<li><strong>Setup Wizard Redirect<\/strong>: Users are automatically redirected to the setup wizard after plugin activation<\/li>\n<li><strong>Simplified Settings UI<\/strong>: Removed service token field from settings - connection is now managed automatically<\/li>\n<li><strong>Check Connection Button<\/strong>: Replaced \"Validate Token\" with cleaner \"Check Connection\" button showing usage stats<\/li>\n<li><strong>Streamlined Onboarding<\/strong>: Better first-time user experience with automatic configuration<\/li>\n<li><strong>Code Cleanup<\/strong>: Removed unused spelling suggestions and search highlighter classes<\/li>\n<\/ul>\n\n<h4>1.11.0<\/h4>\n\n<ul>\n<li><strong>Percentage-Based Threshold Display<\/strong>: Similarity threshold now displays as percentage (20-100%) instead of decimal (0.2-1.0) for easier understanding<\/li>\n<li><strong>Public Badge Visibility Option<\/strong>: New admin setting to show AI Search badge to all visitors, not just editors\/admins<\/li>\n<li><strong>Removed Analytics Feature<\/strong>: Simplified plugin by removing search analytics dashboard and tracking<\/li>\n<li><strong>Enhanced WooCommerce Documentation<\/strong>: Improved readme with eCommerce-specific keywords and use cases<\/li>\n<li><strong>Visual Improvements<\/strong>: Redesigned similarity threshold section with prominent visual indicators<\/li>\n<li><strong>No Emoji Policy<\/strong>: Removed all emojis from admin interface for professional appearance<\/li>\n<li><strong>Website Launch<\/strong>: Added link to https:\/\/wp-search.ai for documentation and demos<\/li>\n<\/ul>\n\n<h4>1.10.1<\/h4>\n\n<ul>\n<li><strong>AI Search Result Badge<\/strong>: Visual badge displayed on search results powered by AI\n\n<ul>\n<li>Shows \"AI Search Result\" label with plugin icon<\/li>\n<li>Only visible to editors and administrators<\/li>\n<li>Tooltip explains visibility restriction<\/li>\n<\/ul><\/li>\n<li><strong>Similarity CSS Classes<\/strong>: Added CSS classes to search result posts\n\n<ul>\n<li><code>ai-search-result<\/code> class for AI-powered results<\/li>\n<li><code>ai-search-similarity-{0-100}<\/code> class with exact similarity percentage<\/li>\n<li><code>ai-search-match<\/code> class when result meets configured threshold<\/li>\n<li><code>ai-search-fallback<\/code> class for non-AI fallback results<\/li>\n<\/ul><\/li>\n<li><strong>Removed Frontend Notices<\/strong>: Removed the intrusive search feedback notices that were shown to all users<\/li>\n<li><strong>Developer Enhancement<\/strong>: Similarity scores accessible via static properties for theme customization<\/li>\n<\/ul>\n\n<h4>1.10.0<\/h4>\n\n<ul>\n<li><strong>Search Analytics Dashboard<\/strong>: Track and analyze search behavior\n\n<ul>\n<li>Log all search queries with result counts<\/li>\n<li>Click-through tracking on search results<\/li>\n<li>Popular queries and zero-result analysis<\/li>\n<li>Time-based statistics and trends<\/li>\n<li>CSV export functionality<\/li>\n<\/ul><\/li>\n<li><strong>\"Did You Mean?\" Spelling Suggestions<\/strong>: Intelligent spelling correction\n\n<ul>\n<li>Vocabulary built from post titles and taxonomies<\/li>\n<li>Levenshtein distance-based word matching<\/li>\n<li>Cached suggestions for performance<\/li>\n<\/ul><\/li>\n<li><strong>Search Term Highlighting<\/strong>: Visual feedback in search results\n\n<ul>\n<li>Highlights matching terms in titles and excerpts<\/li>\n<li>Customizable highlight colors via filters<\/li>\n<li>Dark mode support<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h4>1.9.2<\/h4>\n\n<ul>\n<li><strong>Version Consistency<\/strong>: Fixed version mismatch between plugin header and internal constants<\/li>\n<li><strong>Internationalization Ready<\/strong>: Added text-domain 'ai-search' and domain path for translation support<\/li>\n<li><strong>Documentation Fix<\/strong>: Corrected similarity threshold range documentation (0.2-1.0)<\/li>\n<li><strong>Developer Filter<\/strong>: Added <code>ai_search_searchable_post_types<\/code> filter to customize which post types are searchable<\/li>\n<\/ul>\n\n<h4>1.9.0<\/h4>\n\n<ul>\n<li><strong>Enhanced Fallback Search System<\/strong>: Introduced intelligent 4-tier fallback mechanism for zero-result searches:\n\n<ul>\n<li>WordPress default search fallback with result count display<\/li>\n<li>Broader semantic search with relaxed similarity thresholds<\/li>\n<li>Unprocessed content search for posts without embeddings<\/li>\n<li>Smart query suggestion system for completely failed searches<\/li>\n<\/ul><\/li>\n<li><strong>User Feedback Notifications<\/strong>: Real-time search feedback system with dismissible notices:\n\n<ul>\n<li>Visual indicators showing which fallback method was used<\/li>\n<li>Search result counts for transparency<\/li>\n<li>Automatic cleanup of feedback transients<\/li>\n<li>Contextual messaging for different search scenarios<\/li>\n<\/ul><\/li>\n<li><strong>Interactive Threshold Demo<\/strong>: Professional threshold demonstration interface:\n\n<ul>\n<li>Real-time product similarity visualization<\/li>\n<li>Sample clothing store dataset with summer search scenario<\/li>\n<li>Dynamic filtering based on threshold adjustments<\/li>\n<li>Performance indicators showing recall rates and precision levels<\/li>\n<li>Color-coded similarity scores and visual feedback<\/li>\n<\/ul><\/li>\n<li><strong>Token Validation System<\/strong>: Comprehensive service token management:\n\n<ul>\n<li>One-click token validation with detailed usage statistics<\/li>\n<li>Real-time quota monitoring (daily\/total limits)<\/li>\n<li>Client information display including origin verification<\/li>\n<li>Error handling for invalid or expired tokens<\/li>\n<\/ul><\/li>\n<li><strong>Setup Wizard Enhancement<\/strong>: Improved first-time user experience:\n\n<ul>\n<li>Step-by-step configuration process<\/li>\n<li>Provider comparison with clear recommendations<\/li>\n<li>Visual progress indicators and smooth transitions<\/li>\n<li>Comprehensive completion flow<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h4>1.8.0<\/h4>\n\n<ul>\n<li><strong>Service Token Management<\/strong>: Added manual service token field in General Settings for better control and transparency<\/li>\n<li><strong>Token Validation System<\/strong>: New \"Validate Token\" button with real-time validation and detailed usage statistics<\/li>\n<li><strong>Enhanced Admin Interface<\/strong>: Service token field automatically shows\/hides based on provider selection<\/li>\n<li><strong>Comprehensive Validation Results<\/strong>: Displays client ID, origin, daily\/total limits, current usage, and quota status<\/li>\n<li><strong>Improved Error Handling<\/strong>: Better error messages for token validation failures and connection issues<\/li>\n<li><strong>User Experience Improvements<\/strong>: Loading spinner, button states, and clearer user guidance<\/li>\n<li><strong>Debugging Enhancements<\/strong>: Added error logging for better troubleshooting and API response monitoring<\/li>\n<\/ul>\n\n<h4>1.7.0<\/h4>\n\n<ul>\n<li>Major Performance &amp; UX Improvements<\/li>\n<li>Service Registration Optimization: Moved AI service registration from plugin initialization to settings save, eliminating unnecessary API calls during normal page loads<\/li>\n<li>Cache Management Tab: Added comprehensive cache management interface with three clearing options:\n\n<ul>\n<li>Clear embedding cache (transients) - safe regeneration<\/li>\n<li>Clear post meta embeddings - requires manual regeneration<\/li>\n<li>Clear all embedding data - complete reset option<\/li>\n<\/ul><\/li>\n<li>Enhanced Similarity Threshold**: Improved precision and range:\n\n<ul>\n<li>Range changed from 0.0-1.0 to 0.2-1.0 (eliminates very low-relevance results while allowing broader searches)<\/li>\n<li>Precision increased from 0.01 to 0.001 steps (3 decimal places)<\/li>\n<li>Better user guidance and formatting<\/li>\n<\/ul><\/li>\n<li>Modular Code Architecture: Refactored service registration into isolated, reusable methods for better maintainability<\/li>\n<li>Real-time Cache Statistics: Display current cache size and post embedding counts<\/li>\n<li>Enhanced Error Handling**: Better user feedback when AI service is unavailable with automatic fallback<\/li>\n<li>Security Improvements: Enhanced nonce verification and user capability checks<\/li>\n<\/ul>\n\n<h4>1.6<\/h4>\n\n<ul>\n<li>Replaced internal embedding storage with external service integration.<\/li>\n<li>Token-based authentication per origin.<\/li>\n<li>Restore original search in case there isn't any AI results<\/li>\n<li>Solve fatal errors in case the vectors don't have the same size<\/li>\n<\/ul>\n\n<h4>1.5<\/h4>\n\n<ul>\n<li>Bulk embedding generation based on custom number of posts<\/li>\n<\/ul>\n\n<h4>1.4<\/h4>\n\n<ul>\n<li><strong>Settings UI Revamp<\/strong>: Introduced <strong>tabbed navigation<\/strong> to separate \"General Settings\" and \"Generate Embeddings\" for better organization.<\/li>\n<li><strong>Batch Embedding Generation<\/strong>: Users can now trigger embedding generation <strong>for up to 50 posts<\/strong> at a time.<\/li>\n<li><strong>Custom Post Type Selection<\/strong>: A dropdown was added, allowing users to <strong>choose which CPT<\/strong> they want to generate embeddings for.<\/li>\n<li><strong>Embedding Optimization<\/strong>: Now only processes posts that <strong>do not yet have embeddings<\/strong> to <strong>avoid redundant API calls<\/strong> and <strong>improve performance<\/strong>.<\/li>\n<li><strong>Security Enhancements<\/strong>: Added <strong>nonce verification<\/strong> to protect settings updates.<\/li>\n<\/ul>\n\n<p>This update significantly <strong>improves usability<\/strong>, <strong>optimizes performance<\/strong>, and <strong>gives users more control<\/strong> over AI-powered search embeddings.<\/p>\n\n<h4>1.3<\/h4>\n\n<ul>\n<li><strong>Similarity Threshold Control<\/strong>: Added a <strong>range input field<\/strong> (0-1) in settings to allow users to adjust the similarity threshold dynamically.<\/li>\n<\/ul>\n\n<h4>1.2<\/h4>\n\n<ul>\n<li>Cache Search embeddings, saved in transients for one day<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>text-davinci-003 (deprecated) has been replaced bytext-embedding-ada-002 model<\/li>\n<li>db manipulation has been replaced by custom_post_meta approach<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial release, adding the settings page and the search filter.<\/li>\n<\/ul>","raw_excerpt":"AI-powered semantic search built for WooCommerce stores. Understands what shoppers actually want \u2014 even when they use different words than your produc &hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/219762","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=219762"}],"author":[{"embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/samuelsilvapt"}],"wp:attachment":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=219762"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=219762"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=219762"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=219762"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=219762"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=219762"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}