[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"portal-settings:stajic:sr":3,"public-menus:all":38,"$f3spe82swhxkqv":221,"related:portfolio:solr-fuzzy-suggester-und-solr-infix-suggester-abfrage-ueber-ajax-und-filterung:sr:1":424},{"statusCode":4,"data":5,"message":37},200,{"tenantId":6,"lang":7,"defaultLang":8,"siteUrl":9,"contactEmail":10,"brandName":11,"logoUrl":12,"siteName":11,"siteDescription":13,"ogImage":10,"robotsIndex":14,"socialLinks":10,"reservedSlugs":10,"seoPolicy":15},"stajic","sr","de","https:\u002F\u002Fstajic.de",null,"Stajic Platform","\u002FLogo_Planet.svg","Stajic Portal",true,{"branding":16,"relatedContent":17,"crossDomainLinks":18},{"logoUrl":12},{"enabled":14},[19,22,25,28,31,34],{"url":20,"label":21,"isActive":14,"showInFooter":14,"includeInSameAs":14},"https:\u002F\u002Ffigure.rocks","figure.rocks",{"url":23,"label":24,"isActive":14,"showInFooter":14,"includeInSameAs":14},"https:\u002F\u002Floving.rocks","loving.rocks",{"url":26,"label":27,"isActive":14,"showInFooter":14,"includeInSameAs":14},"https:\u002F\u002Fbazify.com","bazify.com",{"url":29,"label":30,"isActive":14,"showInFooter":14,"includeInSameAs":14},"https:\u002F\u002Fbazify.de","bazify.de",{"url":32,"label":33,"isActive":14,"showInFooter":14,"includeInSameAs":14},"https:\u002F\u002Fbazify.at","bazify.at",{"url":35,"label":36,"isActive":14,"showInFooter":14,"includeInSameAs":14},"https:\u002F\u002Fbazify.ba","bazify.ba","Portal settings resolved",[39,45],{"id":40,"name":41,"location":42,"isActive":14,"isDefault":43,"items":44},1,"main-navigation","header",false,[],{"id":46,"name":47,"location":48,"isActive":14,"isDefault":14,"items":49},4,"main-menu","sidebar",[50,66,79,93,103,118,133],{"id":51,"title":52,"url":60,"target":61,"icon":62,"isActive":14,"type":63,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":64,"portfolioId":10,"children":65},"item-18",{"de":53,"en":54,"es":55,"fr":56,"it":54,"ru":57,"sr":58,"zh":59},"Startseite","Home","Inicio","Accueil","Главная","Почетна","首页","\u002Ffull-stack-web-developer-munich-performance-seo-and-maintainable-builds","_self","i-lucide-home","page",111,[],{"id":67,"title":68,"url":75,"target":61,"icon":76,"isActive":14,"type":63,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":77,"portfolioId":10,"children":78},"item-22",{"de":69,"en":69,"es":70,"fr":69,"it":71,"ru":72,"sr":73,"zh":74},"Vision","Visión","Visione","Видение","Визија","想象","\u002Fueber-uns-webdesign-muenchen-webaplikation","i-lucide-eye",113,[],{"id":80,"title":81,"url":89,"target":61,"icon":90,"isActive":14,"type":63,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":91,"portfolioId":10,"children":92},"item-19",{"de":82,"en":83,"es":84,"fr":83,"it":85,"ru":86,"sr":87,"zh":88},"Leistungen","Services","Servicios","Servizi","Услуги","Услуге","服务","\u002Fservices-dienstleistungen-muenchen","i-lucide-wrench",116,[],{"id":94,"title":95,"url":99,"target":61,"icon":100,"isActive":14,"type":63,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":101,"portfolioId":10,"children":102},"item-23",{"de":96,"en":96,"es":96,"fr":96,"it":96,"ru":97,"sr":97,"zh":98},"Blog","Блог","博客","\u002Fblog","i-lucide-book-open",112,[],{"id":104,"title":105,"url":114,"target":61,"icon":115,"isActive":14,"type":63,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":116,"portfolioId":10,"children":117},"item-32",{"de":106,"en":107,"es":108,"fr":109,"it":110,"ru":111,"sr":112,"zh":113},"Neue Technologien","New Technologies","Nuevas tecnologías","Nouvelles technologies","Nuove tecnologie","Новые технологии","Нове технологије","新技术！","\u002Fneue-webtechnologien","i-lucide-sparkles",122,[],{"id":119,"title":120,"url":129,"target":61,"icon":130,"isActive":14,"type":63,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":131,"portfolioId":10,"children":132},"item-20",{"de":121,"en":122,"es":123,"fr":124,"it":125,"ru":126,"sr":127,"zh":128},"Kontakt","Contact us!","Contacto","Contact","Contatto","Контакт","Контактирајте нас","联系我们！","\u002Fcontact","i-lucide-mail",115,[],{"id":134,"title":135,"url":144,"target":61,"icon":145,"isActive":14,"type":63,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":146,"portfolioId":10,"children":147},"item-21",{"de":136,"en":137,"es":138,"fr":139,"it":140,"ru":141,"sr":142,"zh":143},"Unsere Arbeit","Our Work","Nuestro trabajo","Nos réalisations","I nostri lavori","Наши работы","Наши радови","文件夹","\u002Fportfolio","i-lucide-briefcase",114,[148,161,175,191,206],{"id":149,"title":150,"url":144,"target":61,"icon":159,"isActive":14,"type":63,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":146,"portfolioId":10,"children":160},"item-24",{"de":151,"en":152,"es":153,"fr":154,"it":155,"ru":156,"sr":157,"zh":158},"Alle Projekte","All Projects","Todos los proyectos","Tous les projets","Tutti i progetti","Все проекты","Сви пројекти","所有项目","i-lucide-grid-3x3",[],{"id":162,"title":163,"url":171,"target":61,"icon":172,"isActive":14,"type":173,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":10,"portfolioId":10,"children":174},"item-29",{"de":164,"en":165,"es":166,"fr":167,"it":168,"ru":169,"sr":170,"zh":143},"Local Roots, Global Reach","Local Roots - Global Reach","Empresa local ","Entreprise locale","Azienda locale","Местная компания","Локално предузеће глобално тржиште","\u002Fportfolio\u002Flocal-roots-global-reach-communication-media-systems-for-modern-business","i-lucide-globe-2","custom",[],{"id":176,"title":177,"url":186,"target":61,"icon":187,"isActive":14,"type":188,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":10,"portfolioId":189,"children":190},"menu-2916d060-8681-482a-af9a-c107a8bc30d8",{"de":178,"en":179,"es":180,"fr":181,"it":182,"ru":183,"sr":184,"zh":185},"Von Rohdaten zu verifizierbarem KI-Kontext: Eine praktische Architektur für agentenbereite Informationen","From Raw Data to Verifiable AI Context:","De datos sin procesar a contexto de IA verificable: una arquitectura práctica para información lista para agentes","Des données brutes au contexte d'IA vérifiable : une architecture pratique pour des informations prêtes pour les agents","Dai dati grezzi a un contesto IA verificabile: Un'architettura pratica per informazioni pronte per gli agenti","От необработанных данных к верифицируемому контексту ИИ: практическая архитектура информации, готовой для агентов","Od sirovih podataka do proverljivog AI konteksta: Praktična arhitektura za informacije spremne za agente","从原始数据到可验证的 AI 上下文：面向智能体就绪信息的实用架构","\u002Fportfolio\u002Ffrom-raw-data-to-verifiable-ai-context-a-practical-architecture-for-agent-ready-information","i-lucide-database","portfolio",22,[],{"id":192,"title":193,"url":202,"target":61,"icon":203,"isActive":14,"type":188,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":10,"portfolioId":204,"children":205},"menu-e2061cd7-ff53-49d5-a0e8-3d49090577c0",{"de":194,"en":195,"es":196,"fr":197,"it":198,"ru":199,"sr":200,"zh":201},"Präsenzplattformen — Unternehmenskommunikation","Presence Platforms — Enterprise Communication","Plataformas de presencia — Comunicación empresarial","Plateformes de présence — Communication d'entreprise","Presence Platforms — Comunicazione aziendale","Платформы присутствия — Корпоративные коммуникации","Presence platforme — Poslovna komunikacija","Presence 平台 — 企业通信","\u002Fportfolio\u002Fpresence-platforms-enterprise-communication-that-wins-without-competing","i-lucide-badge-percent",21,[],{"id":207,"title":208,"url":217,"target":61,"icon":218,"isActive":14,"type":188,"productId":10,"categoryId":10,"shopCategoryId":10,"articleId":10,"pageId":10,"portfolioId":219,"children":220},"menu-a781582e-e90d-418e-b8c9-b070bc37c37e",{"de":209,"en":210,"es":211,"fr":212,"it":213,"ru":214,"sr":215,"zh":216},"Maximierung des POS-ROI durch Konsistenz","Maximizing POS ROI Through Consistent","Maximizar el ROI del POS a través de constante","Maximiser le ROI du PDV grâce à la cohérence","Massimizzare il ROI del POS attraverso costante","Максимизация ROI POS за счет последовательного","Maksimizacija POS ROI-ja kroz dosledno","通过持续最大化 POS 投资回报率","\u002Fportfolio\u002Ffrom-vision-to-value-maximizing-pos-roi-through-consistent-ci-creation-and-strategic-branding","i-lucide-briefcase-business",11,[],{"statusCode":4,"data":222,"message":423},{"id":223,"title":224,"slug":225,"content":226,"contentJson":227,"excerpt":236,"featuredImage":295,"featuredImageAlt":296,"featuredImageCaption":10,"featuredImageTitle":10,"featuredImageCopyright":10,"featuredImageAuthor":10,"featuredImageSourceUrl":10,"featuredImageLicense":10,"featuredImageIsAiGenerated":43,"status":297,"publishedAt":298,"createdAt":299,"updatedAt":300,"seoLocalePaths":301,"author":309,"translations":314},"15","Solr Fuzzy Suggester und Solr Infix Suggester über Ajax","solr-fuzzy-suggester-und-solr-infix-suggester-abfrage-ueber-ajax-und-filterung","{\"time\":1766400020000,\"blocks\":[{\"data\":{\"text\":\"Опис пројекта\",\"level\":2},\"type\":\"header\"},{\"data\":{\"text\":\"За ефикасну претрагу на веб-сајту важно је да корисници брзо и једноставно пронађу одговарајуће резултате. Solr Fuzzy Suggester и Solr Infix Suggester нуде ефикасно рјешење за то. Они се могу позивати и филтрирати преко Ajax упита.\"},\"type\":\"paragraph\"},{\"data\":{\"text\":\"Активирање suggester-а врши се преко XML компоненте SuggestComponent у датотеци solrconfig.xml, као што показује сљедећи примјер кода:\"},\"type\":\"paragraph\"},{\"data\":{\"code\":\"\u003CsearchComponent name=\\\"suggest\\\" class=\\\"solr.SuggestComponent\\\">\\n  \u003Clst name=\\\"suggester\\\">\\n    \u003Cstr name=\\\"name\\\">mySuggester\u003C\u002Fstr>\\n    \u003Cstr name=\\\"lookupImpl\\\">FuzzyLookupFactory\u003C\u002Fstr>\\n    \u003Cstr name=\\\"dictionaryImpl\\\">DocumentDictionaryFactory\u003C\u002Fstr>\\n    \u003Cstr name=\\\"field\\\">suggest_field\u003C\u002Fstr>\\n    \u003Cstr name=\\\"weightField\\\">weight\u003C\u002Fstr>\\n    \u003Cstr name=\\\"suggestAnalyzerFieldType\\\">text_general\u003C\u002Fstr>\\n    \u003Cstr name=\\\"buildOnStartup\\\">true\u003C\u002Fstr>\\n  \u003C\u002Flst>\\n\u003C\u002FsearchComponent>\"},\"type\":\"code\"},{\"data\":{\"text\":\"Коришћењем Solr Fuzzy Suggester и Solr Infix Suggester-а, корисници могу брзо и једноставно добити релевантне резултате, јер добијају приједлоге и функције аутоматског довршавања. Резултати упита се затим могу филтрирати како би се осигурало да се приказују само најрелевантнији резултати.\"},\"type\":\"paragraph\"},{\"data\":{\"text\":\"Примјеном ових технологија веб-сајтови могу понудити побољшану функционалност претраге и боље корисничко искуство.\"},\"type\":\"paragraph\"},{\"data\":{\"text\":\"Примјер конфигурације (Syntax Highlighter)\",\"level\":3},\"type\":\"header\"},{\"data\":{\"code\":\"\u003CsearchComponent name=\\\"suggest\\\" class=\\\"solr.SuggestComponent\\\">\\n  \u003Clst name=\\\"suggester\\\">\\n    \u003Cstr name=\\\"name\\\">mySuggester\u003C\u002Fstr>\\n    \u003Cstr name=\\\"lookupImpl\\\">FuzzyLookupFactory\u003C\u002Fstr>\\n    \u003Cstr name=\\\"dictionaryImpl\\\">DocumentDictionaryFactory\u003C\u002Fstr>\\n    \u003Cstr name=\\\"field\\\">cat\u003C\u002Fstr>\\n    \u003Cstr name=\\\"weightField\\\">price\u003C\u002Fstr>\\n    \u003Cstr name=\\\"suggestAnalyzerFieldType\\\">string\u003C\u002Fstr>\\n    \u003Cstr name=\\\"buildOnStartup\\\">false\u003C\u002Fstr>\\n  \u003C\u002Flst>\\n\u003C\u002FsearchComponent>\"},\"type\":\"code\"},{\"data\":{\"text\":\"Слика показује шта suggester ради: унос не даје тачан погодак, а Solr Suggester враћа сличне приједлоге. Постоји више начина да се одреди сличност ниски (string). Овдје ћу поменути два.\"},\"type\":\"paragraph\"},{\"data\":{\"text\":\"1) Fuzzy (Левенштајн\u002FLevenshtein дистанца)\",\"level\":3},\"type\":\"header\"},{\"data\":{\"text\":\"Прва могућност је fuzzy, који се заснива на алгоритму Левенштајнове дистанце (Levenshtein distance).\"},\"type\":\"paragraph\"},{\"data\":{\"text\":\"У JavaScript-у би то изгледало овако:\"},\"type\":\"paragraph\"},{\"data\":{\"code\":\"function levenshtein(a, b) {\\n  var t = [], u, i, j, m = a.length, n = b.length;\\n  if (!m) { return n; }\\n  if (!n) { return m; }\\n  for (j = 0; j \u003C= n; j++) { t[j] = j; }\\n  for (i = 1; i \u003C= m; i++) {\\n    for (u = [i], j = 1; j \u003C= n; j++) {\\n      u[j] = a[i - 1] === b[j - 1] ? t[j - 1] : Math.min(t[j - 1], t[j], u[j - 1]) + 1;\\n    } t = u;\\n  } return u[n];\\n}\\n\u002F\u002F a и b су ниске (strings)\"},\"type\":\"code\"},{\"data\":{\"text\":\"2) Infix (префикс-подударања и Lucene индекс)\",\"level\":3},\"type\":\"header\"},{\"data\":{\"text\":\"Друга могућност је infix, који се заснива на префикс-подударањима са токенима у индексираном тексту. За свој рјечник користи Lucene индекс. Lucene је библиотека за претрагу пуним текстом (Apache Software Foundation) која садржи open-source програмске библиотеке.\"},\"type\":\"paragraph\"},{\"data\":{\"text\":\"У пракси, то је индексирана структура која током обраде креира токене. Размаци могу означавати крај или почетак ниске. Појединачне ниске се нормализују ради бољих погодака — на примјер, претварање великих слова у мала — а индексирају се и више повезаних варијанти из рјечника.\"},\"type\":\"paragraph\"},{\"data\":{\"text\":\"Предност је у опциjама које се могу дефинисати у упиту (query), што даје већу флексибилност.\"},\"type\":\"paragraph\"},{\"data\":{\"text\":\"Шта раде комерцијалне претраживачке машине?\",\"level\":3},\"type\":\"header\"},{\"data\":{\"text\":\"Комбинација оба приступа је у суштини оно што већина претраживача нуди. При уносу у поље за претрагу, предлажу се појединачне ниске у контексту других ниски и појмова. Тако се добија семантичка претрага.\"},\"type\":\"paragraph\"},{\"data\":{\"text\":\"Код великих провајдера претраге ови резултати су комерцијално подешени и усмјеравају кориснике ка приоритетним индексима. Странице се сортирају и категоришу преко правила и смјерница. Интересне групе се одређују преко технологија праћења (tracking), AI алгоритама и database marketing-а, а претрага се прилагођава циљној групи.\"},\"type\":\"paragraph\"}],\"version\":\"2.30.0\"}",{"time":228,"blocks":229,"version":294},1766400020000,[230,234,238,241,245,248,251,255,258,261,264,267,270,273,276,279,282,285,288,291],{"data":231,"type":42},{"text":232,"level":233},"Опис пројекта",2,{"data":235,"type":237},{"text":236},"За ефикасну претрагу на веб-сајту важно је да корисници брзо и једноставно пронађу одговарајуће резултате. Solr Fuzzy Suggester и Solr Infix Suggester нуде ефикасно рјешење за то. Они се могу позивати и филтрирати преко Ajax упита.","paragraph",{"data":239,"type":237},{"text":240},"Активирање suggester-а врши се преко XML компоненте SuggestComponent у датотеци solrconfig.xml, као што показује сљедећи примјер кода:",{"data":242,"type":244},{"code":243},"\u003CsearchComponent name=\"suggest\" class=\"solr.SuggestComponent\">\n  \u003Clst name=\"suggester\">\n    \u003Cstr name=\"name\">mySuggester\u003C\u002Fstr>\n    \u003Cstr name=\"lookupImpl\">FuzzyLookupFactory\u003C\u002Fstr>\n    \u003Cstr name=\"dictionaryImpl\">DocumentDictionaryFactory\u003C\u002Fstr>\n    \u003Cstr name=\"field\">suggest_field\u003C\u002Fstr>\n    \u003Cstr name=\"weightField\">weight\u003C\u002Fstr>\n    \u003Cstr name=\"suggestAnalyzerFieldType\">text_general\u003C\u002Fstr>\n    \u003Cstr name=\"buildOnStartup\">true\u003C\u002Fstr>\n  \u003C\u002Flst>\n\u003C\u002FsearchComponent>","code",{"data":246,"type":237},{"text":247},"Коришћењем Solr Fuzzy Suggester и Solr Infix Suggester-а, корисници могу брзо и једноставно добити релевантне резултате, јер добијају приједлоге и функције аутоматског довршавања. Резултати упита се затим могу филтрирати како би се осигурало да се приказују само најрелевантнији резултати.",{"data":249,"type":237},{"text":250},"Примјеном ових технологија веб-сајтови могу понудити побољшану функционалност претраге и боље корисничко искуство.",{"data":252,"type":42},{"text":253,"level":254},"Примјер конфигурације (Syntax Highlighter)",3,{"data":256,"type":244},{"code":257},"\u003CsearchComponent name=\"suggest\" class=\"solr.SuggestComponent\">\n  \u003Clst name=\"suggester\">\n    \u003Cstr name=\"name\">mySuggester\u003C\u002Fstr>\n    \u003Cstr name=\"lookupImpl\">FuzzyLookupFactory\u003C\u002Fstr>\n    \u003Cstr name=\"dictionaryImpl\">DocumentDictionaryFactory\u003C\u002Fstr>\n    \u003Cstr name=\"field\">cat\u003C\u002Fstr>\n    \u003Cstr name=\"weightField\">price\u003C\u002Fstr>\n    \u003Cstr name=\"suggestAnalyzerFieldType\">string\u003C\u002Fstr>\n    \u003Cstr name=\"buildOnStartup\">false\u003C\u002Fstr>\n  \u003C\u002Flst>\n\u003C\u002FsearchComponent>",{"data":259,"type":237},{"text":260},"Слика показује шта suggester ради: унос не даје тачан погодак, а Solr Suggester враћа сличне приједлоге. Постоји више начина да се одреди сличност ниски (string). Овдје ћу поменути два.",{"data":262,"type":42},{"text":263,"level":254},"1) Fuzzy (Левенштајн\u002FLevenshtein дистанца)",{"data":265,"type":237},{"text":266},"Прва могућност је fuzzy, који се заснива на алгоритму Левенштајнове дистанце (Levenshtein distance).",{"data":268,"type":237},{"text":269},"У JavaScript-у би то изгледало овако:",{"data":271,"type":244},{"code":272},"function levenshtein(a, b) {\n  var t = [], u, i, j, m = a.length, n = b.length;\n  if (!m) { return n; }\n  if (!n) { return m; }\n  for (j = 0; j \u003C= n; j++) { t[j] = j; }\n  for (i = 1; i \u003C= m; i++) {\n    for (u = [i], j = 1; j \u003C= n; j++) {\n      u[j] = a[i - 1] === b[j - 1] ? t[j - 1] : Math.min(t[j - 1], t[j], u[j - 1]) + 1;\n    } t = u;\n  } return u[n];\n}\n\u002F\u002F a и b су ниске (strings)",{"data":274,"type":42},{"text":275,"level":254},"2) Infix (префикс-подударања и Lucene индекс)",{"data":277,"type":237},{"text":278},"Друга могућност је infix, који се заснива на префикс-подударањима са токенима у индексираном тексту. За свој рјечник користи Lucene индекс. Lucene је библиотека за претрагу пуним текстом (Apache Software Foundation) која садржи open-source програмске библиотеке.",{"data":280,"type":237},{"text":281},"У пракси, то је индексирана структура која током обраде креира токене. Размаци могу означавати крај или почетак ниске. Појединачне ниске се нормализују ради бољих погодака — на примјер, претварање великих слова у мала — а индексирају се и више повезаних варијанти из рјечника.",{"data":283,"type":237},{"text":284},"Предност је у опциjама које се могу дефинисати у упиту (query), што даје већу флексибилност.",{"data":286,"type":42},{"text":287,"level":254},"Шта раде комерцијалне претраживачке машине?",{"data":289,"type":237},{"text":290},"Комбинација оба приступа је у суштини оно што већина претраживача нуди. При уносу у поље за претрагу, предлажу се појединачне ниске у контексту других ниски и појмова. Тако се добија семантичка претрага.",{"data":292,"type":237},{"text":293},"Код великих провајдера претраге ови резултати су комерцијално подешени и усмјеравају кориснике ка приоритетним индексима. Странице се сортирају и категоришу преко правила и смјерница. Интересне групе се одређују преко технологија праћења (tracking), AI алгоритама и database marketing-а, а претрага се прилагођава циљној групи.","2.30.0","\u002Fuploads\u002F2019\u002F11\u002FSolr-Suggester-Fuzzy-infix.webp","Solr-Suggester-Fuzzy-infix","PUBLISHED","2025-10-30T13:36:00.000Z","2025-10-30T13:36:08.109Z","2025-12-25T18:35:30.027Z",{"en":302,"de":303,"sr":304,"es":305,"fr":306,"it":307,"ru":308},"\u002Fportfolio\u002Fsolr-fuzzy-suggester-und-solr-infix-suggester-abfrage-ueber-ajax-und-filterung","\u002Fde\u002Fportfolio\u002Fsolr-fuzzy-suggester-und-solr-infix-suggester-abfrage-ueber-ajax-und-filterung","\u002Fsr\u002Fportfolio\u002Fsolr-fuzzy-suggester-und-solr-infix-suggester-abfrage-ueber-ajax-und-filterung","\u002Fes\u002Fportfolio\u002Fsolr-fuzzy-suggester-und-solr-infix-suggester-abfrage-ueber-ajax-und-filterung","\u002Ffr\u002Fportfolio\u002Fsolr-fuzzy-suggester-und-solr-infix-suggester-abfrage-ueber-ajax-und-filterung","\u002Fit\u002Fportfolio\u002Fsolr-fuzzy-suggester-und-solr-infix-suggester-abfrage-ueber-ajax-und-filterung","\u002Fru\u002Fportfolio\u002Fsolr-fuzzy-suggester-und-solr-infix-suggester-abfrage-ueber-ajax-und-filterung",{"id":310,"login":311,"email":312,"displayName":313},"1","admin","","Admin User",[315,380],{"lang":316,"title":317,"content":318,"contentJson":319,"excerpt":379},"en","Solr Fuzzy Suggester and Solr Infix Suggester over Ajax","{\"time\":1766400020000,\"blocks\":[{\"data\":{\"text\":\"Project Description\",\"level\":2},\"type\":\"header\"},{\"data\":{\"text\":\"For efficient searching on a website, it is important that users quickly and easily find the appropriate results. Solr Fuzzy Suggester and Solr Infix Suggester offer an efficient solution for this. They can be called and filtered via Ajax queries.\"},\"type\":\"paragraph\"},{\"data\":{\"text\":\"The suggester is activated via the XML component SuggestComponent in the solrconfig.xml file, as shown in the following code example:\"},\"type\":\"paragraph\"},{\"data\":{\"code\":\"\u003CsearchComponent name=\\\"suggest\\\" class=\\\"solr.SuggestComponent\\\">\\n  \u003Clst name=\\\"suggester\\\">\\n    \u003Cstr name=\\\"name\\\">mySuggester\u003C\u002Fstr>\\n    \u003Cstr name=\\\"lookupImpl\\\">FuzzyLookupFactory\u003C\u002Fstr>\\n    \u003Cstr name=\\\"dictionaryImpl\\\">DocumentDictionaryFactory\u003C\u002Fstr>\\n    \u003Cstr name=\\\"field\\\">suggest_field\u003C\u002Fstr>\\n    \u003Cstr name=\\\"weightField\\\">weight\u003C\u002Fstr>\\n    \u003Cstr name=\\\"suggestAnalyzerFieldType\\\">text_general\u003C\u002Fstr>\\n    \u003Cstr name=\\\"buildOnStartup\\\">true\u003C\u002Fstr>\\n  \u003C\u002Flst>\\n\u003C\u002FsearchComponent>\"},\"type\":\"code\"},{\"data\":{\"text\":\"By using Solr Fuzzy Suggester and Solr Infix Suggester, users can quickly and easily get relevant results, as they receive suggestions and auto-completion features. Query results can then be filtered to ensure that only the most relevant results are displayed.\"},\"type\":\"paragraph\"},{\"data\":{\"text\":\"By implementing these technologies, websites can offer improved search functionality and a better user experience.\"},\"type\":\"paragraph\"},{\"data\":{\"text\":\"Configuration Example (Syntax Highlighter)\",\"level\":3},\"type\":\"header\"},{\"data\":{\"code\":\"\u003CsearchComponent name=\\\"suggest\\\" class=\\\"solr.SuggestComponent\\\">\\n  \u003Clst name=\\\"suggester\\\">\\n    \u003Cstr name=\\\"name\\\">mySuggester\u003C\u002Fstr>\\n    \u003Cstr name=\\\"lookupImpl\\\">FuzzyLookupFactory\u003C\u002Fstr>\\n    \u003Cstr name=\\\"dictionaryImpl\\\">DocumentDictionaryFactory\u003C\u002Fstr>\\n    \u003Cstr name=\\\"field\\\">cat\u003C\u002Fstr>\\n    \u003Cstr name=\\\"weightField\\\">price\u003C\u002Fstr>\\n    \u003Cstr name=\\\"suggestAnalyzerFieldType\\\">string\u003C\u002Fstr>\\n    \u003Cstr name=\\\"buildOnStartup\\\">false\u003C\u002Fstr>\\n  \u003C\u002Flst>\\n\u003C\u002FsearchComponent>\"},\"type\":\"code\"},{\"data\":{\"text\":\"The image shows what the suggester does: the input does not yield an exact match, and the Solr Suggester returns similar suggestions. There are several ways to determine string similarity. I will mention two here.\"},\"type\":\"paragraph\"},{\"data\":{\"text\":\"1) Fuzzy (Levenshtein distance)\",\"level\":3},\"type\":\"header\"},{\"data\":{\"text\":\"The first possibility is fuzzy, which is based on the Levenshtein distance algorithm.\"},\"type\":\"paragraph\"},{\"data\":{\"text\":\"In JavaScript, it would look like this:\"},\"type\":\"paragraph\"},{\"data\":{\"code\":\"function levenshtein(a, b) {\\n  var t = [], u, i, j, m = a.length, n = b.length;\\n  if (!m) { return n; }\\n  if (!n) { return m; }\\n  for (j = 0; j \u003C= n; j++) { t[j] = j; }\\n  for (i = 1; i \u003C= m; i++) {\\n    for (u = [i], j = 1; j \u003C= n; j++) {\\n      u[j] = a[i - 1] === b[j - 1] ? t[j - 1] : Math.min(t[j - 1], t[j], u[j - 1]) + 1;\\n    } t = u;\\n  } return u[n];\\n}\\n\u002F\u002F a and b are strings\"},\"type\":\"code\"},{\"data\":{\"text\":\"2) Infix (prefix matching and Lucene index)\",\"level\":3},\"type\":\"header\"},{\"data\":{\"text\":\"The second possibility is infix, which is based on prefix matching with tokens in the indexed text. It uses the Lucene index for its dictionary. Lucene is a full-text search library (Apache Software Foundation) that contains open-source programming libraries.\"},\"type\":\"paragraph\"},{\"data\":{\"text\":\"In practice, it is an indexed structure that creates tokens during processing. Spaces can mark the end or beginning of a string. Individual strings are normalized for better matches — for example, converting uppercase letters to lowercase — and multiple related variants from the dictionary are also indexed.\"},\"type\":\"paragraph\"},{\"data\":{\"text\":\"The advantage lies in the options that can be defined in the query, which provides greater flexibility.\"},\"type\":\"paragraph\"},{\"data\":{\"text\":\"What do commercial search engines do?\",\"level\":3},\"type\":\"header\"},{\"data\":{\"text\":\"A combination of both approaches is essentially what most search engines offer. When entering input into the search field, individual strings are suggested in the context of other strings and terms. This results in semantic search.\"},\"type\":\"paragraph\"},{\"data\":{\"text\":\"For large search providers, these results are commercially adjusted and direct users towards priority indices. Pages are sorted and categorized via rules and guidelines. Interest groups are determined via tracking technologies, AI algorithms, and database marketing, and the search is tailored to the target group.\"},\"type\":\"paragraph\"}],\"version\":\"2.30.0\"}",{"time":228,"blocks":320,"version":294},[321,324,327,330,332,335,338,341,343,346,349,352,355,358,361,364,367,370,373,376],{"data":322,"type":42},{"text":323,"level":233},"Project Description",{"data":325,"type":237},{"text":326},"For efficient searching on a website, it is important that users quickly and easily find the appropriate results. Solr Fuzzy Suggester and Solr Infix Suggester offer an efficient solution for this. They can be called and filtered via Ajax queries.",{"data":328,"type":237},{"text":329},"The suggester is activated via the XML component SuggestComponent in the solrconfig.xml file, as shown in the following code example:",{"data":331,"type":244},{"code":243},{"data":333,"type":237},{"text":334},"By using Solr Fuzzy Suggester and Solr Infix Suggester, users can quickly and easily get relevant results, as they receive suggestions and auto-completion features. Query results can then be filtered to ensure that only the most relevant results are displayed.",{"data":336,"type":237},{"text":337},"By implementing these technologies, websites can offer improved search functionality and a better user experience.",{"data":339,"type":42},{"text":340,"level":254},"Configuration Example (Syntax Highlighter)",{"data":342,"type":244},{"code":257},{"data":344,"type":237},{"text":345},"The image shows what the suggester does: the input does not yield an exact match, and the Solr Suggester returns similar suggestions. There are several ways to determine string similarity. I will mention two here.",{"data":347,"type":42},{"text":348,"level":254},"1) Fuzzy (Levenshtein distance)",{"data":350,"type":237},{"text":351},"The first possibility is fuzzy, which is based on the Levenshtein distance algorithm.",{"data":353,"type":237},{"text":354},"In JavaScript, it would look like this:",{"data":356,"type":244},{"code":357},"function levenshtein(a, b) {\n  var t = [], u, i, j, m = a.length, n = b.length;\n  if (!m) { return n; }\n  if (!n) { return m; }\n  for (j = 0; j \u003C= n; j++) { t[j] = j; }\n  for (i = 1; i \u003C= m; i++) {\n    for (u = [i], j = 1; j \u003C= n; j++) {\n      u[j] = a[i - 1] === b[j - 1] ? t[j - 1] : Math.min(t[j - 1], t[j], u[j - 1]) + 1;\n    } t = u;\n  } return u[n];\n}\n\u002F\u002F a and b are strings",{"data":359,"type":42},{"text":360,"level":254},"2) Infix (prefix matching and Lucene index)",{"data":362,"type":237},{"text":363},"The second possibility is infix, which is based on prefix matching with tokens in the indexed text. It uses the Lucene index for its dictionary. Lucene is a full-text search library (Apache Software Foundation) that contains open-source programming libraries.",{"data":365,"type":237},{"text":366},"In practice, it is an indexed structure that creates tokens during processing. Spaces can mark the end or beginning of a string. Individual strings are normalized for better matches — for example, converting uppercase letters to lowercase — and multiple related variants from the dictionary are also indexed.",{"data":368,"type":237},{"text":369},"The advantage lies in the options that can be defined in the query, which provides greater flexibility.",{"data":371,"type":42},{"text":372,"level":254},"What do commercial search engines do?",{"data":374,"type":237},{"text":375},"A combination of both approaches is essentially what most search engines offer. When entering input into the search field, individual strings are suggested in the context of other strings and terms. This results in semantic search.",{"data":377,"type":237},{"text":378},"For large search providers, these results are commercially adjusted and direct users towards priority indices. Pages are sorted and categorized via rules and guidelines. Interest groups are determined via tracking technologies, AI algorithms, and database marketing, and the search is tailored to the target group.","For effective website search, it is important that users quickly and easily find relevant results. Solr Fuzzy Suggester and Solr Infix Suggester offer an efficient solution for this. They can be called and filtered via Ajax queries.",{"lang":7,"title":224,"content":226,"contentJson":381,"excerpt":236},{"time":228,"blocks":382,"version":294},[383,385,387,389,391,393,395,397,399,401,403,405,407,409,411,413,415,417,419,421],{"data":384,"type":42},{"text":232,"level":233},{"data":386,"type":237},{"text":236},{"data":388,"type":237},{"text":240},{"data":390,"type":244},{"code":243},{"data":392,"type":237},{"text":247},{"data":394,"type":237},{"text":250},{"data":396,"type":42},{"text":253,"level":254},{"data":398,"type":244},{"code":257},{"data":400,"type":237},{"text":260},{"data":402,"type":42},{"text":263,"level":254},{"data":404,"type":237},{"text":266},{"data":406,"type":237},{"text":269},{"data":408,"type":244},{"code":272},{"data":410,"type":42},{"text":275,"level":254},{"data":412,"type":237},{"text":278},{"data":414,"type":237},{"text":281},{"data":416,"type":237},{"text":284},{"data":418,"type":42},{"text":287,"level":254},{"data":420,"type":237},{"text":290},{"data":422,"type":237},{"text":293},"Portfolio erfolgreich abgerufen",{"items":425,"source":507,"manualIds":508,"manualMatchedIds":509},[426,433,440,447,454,461,467,474,481,488,495,501],{"id":427,"slug":428,"title":429,"excerpt":430,"featuredImage":431,"publishedAt":432},"21","presence-platforms-enterprise-communication-that-wins-without-competing","Presence Platforms — Korporativna komunikacija koja pobeđuje bez nadmetanja","Platforma prisustva pretvara operacije u jasnoću na nivou donošenja odluka: upravljane tvrdnje, ponovljivi formati, interno povezivanje koje usmerava odluke i nedeljni ciklus učenja koji uvećava poverenje i prodajni levak.","\u002Fuploads\u002F2026\u002F02\u002Fpresence-platforms-enterprise-communication-that-wins-without-competing-1771263312197-h9p74p.webp","2026-02-16T14:01:00.000Z",{"id":434,"slug":435,"title":436,"excerpt":437,"featuredImage":438,"publishedAt":439},"11","from-vision-to-value-maximizing-pos-roi-through-consistent-ci-creation-and-strategic-branding","Od vizije do vrednosti: Maksimizovanje POS ROI-ja kroz dosledno kreiranje CI-ja i strateško brendiranje","U savremenoj maloprodaji, premošćivanje jaza između kreativne vizije i finansijske vrednosti zahteva usklađivanje korporativnog identiteta (CI) sa prodajnim mestom (POS). Ova studija slučaja istražuje okvir za eliminisanje kognitivnog trenja radi poboljšanja ROI-ja.","\u002Fuploads\u002F2026\u002F02\u002Ffrom-vision-to-value-maximizing-pos-roi-through-consistent-ci-creation-and-strategic-branding-1771265752834-ha552f.webp","2025-10-30T08:36:00.000Z",{"id":441,"slug":442,"title":443,"excerpt":444,"featuredImage":445,"publishedAt":446},"19","from-global-business-to-the-kitchen-a-reverse-communication-system-that-still-scales","Od globalnog poslovanja do kuhinje — sistem reverzne komunikacije koji i dalje skalira","Prestanite sa skaliranjem na osnovu buke. Počnite od globalnih signala, svedite ih na nekoliko stabilnih istina i pretvorite ih u nedeljne šablone, kontrolne liste i ponovljive “menije” koji isporučuju stvarnu vrednost.","\u002Fuploads\u002F2026\u002F02\u002Ffrom-global-business-to-the-kitchen-a-reverse-communication-system-that-still-scales-1771251820950-zhp2bz.webp","2026-02-16T10:13:00.000Z",{"id":448,"slug":449,"title":450,"excerpt":451,"featuredImage":452,"publishedAt":453},"18","local-roots-global-reach-communication-media-systems-for-modern-business","Локални корени, глобални домети — Комуникациони и медијски системи за савремено пословање","Pomažem lokalnim preduzećima da se predstave kao globalni brendovi: jasno pozicioniranje, sadržaj visokog kvaliteta i distribucija koja pretvara pažnju u potencijalne klijente.","\u002Fuploads\u002F2026\u002F02\u002Flocal-roots-global-reach-communication-media-systems-for-modern-business-1771251472163-5ujsqm.webp","2026-02-16T02:13:00.000Z",{"id":455,"slug":456,"title":457,"excerpt":458,"featuredImage":459,"publishedAt":460},"13","mobile-app-creation-with-apache-cordova-cross-platform-case-study","Kreiranje mobilnih aplikacija sa Apache Cordova: Višeplatformska studija slučaja","Istražite kako Apache Cordova transformiše veb aplikacije u višeplatformska mobilna rešenja za Android, iOS i još mnogo toga, sa detaljnim procesom, tehnološkim skupom i prednostima.","\u002Fuploads\u002F2018\u002F01\u002FApache-Ubuntu-Install-Certbot_stajic_de_Suchmaschinen_Webcrawler_Suchergebnissen.webp","2025-10-30T12:36:00.000Z",{"id":462,"slug":463,"title":464,"excerpt":10,"featuredImage":465,"publishedAt":466},"16","automobile-bauer-joomla","Veb-sajt sa stavom - Automobile Bauer Joomla","\u002Fuploads\u002F2014\u002F09\u002F2019-11-21_145554_automobile-bauer.de_.webp","2025-10-30T14:36:08.121Z",{"id":468,"slug":469,"title":470,"excerpt":471,"featuredImage":472,"publishedAt":473},"17","integration-von-gpt-4-mit-libreoffice-auf-ubuntu-eine-vollstaendige-anleitung","Studija slučaja LibreOffice ChatGPT makro integracije","Istražite prilagođenu Python OpenAI makro integraciju za ChatGPT u LibreOffice-u, unapređujući radne procese uz pomoć veštačke inteligencije direktno u vašim dokumentima.","\u002Fuploads\u002F2024\u002F05\u002FDALL·E-2024-05-21-23.36.22-An-illustration-of-a-modern-desktop-environment-showing-LibreOffice-on-an-Ubuntu-system.-The-image-should-depict-a-Python-script-running-within-LibreO-large.webp","2026-01-15T17:44:00.000Z",{"id":475,"slug":476,"title":477,"excerpt":478,"featuredImage":479,"publishedAt":480},"20","from-global-business-to-the-kitchen-enterprise-media-os-that-scales-calmly-stajic-de-showcase-portals","Od globalnog biznisa do kuhinje — Enterprise Media OS koji se smireno skalira (stajic.de + Showcase portali)","Globalna strategija funkcioniše samo ako preživi kuhinju: ograničenja, ritam, jasnoća i merljiv učinak. Evo kako Enterprise Media OS pretvara tržišnu buku u ponovljive sisteme — uz figure.rocks i loving.rocks kao showcase implementacije.","\u002Fuploads\u002F2026\u002F02\u002Ffrom-global-business-to-the-kitchen-enterprise-media-os-that-scales-calmly-stajic-de-showcase-portals-1771252973332-rpajor.webp","2026-02-16T02:39:00.000Z",{"id":482,"slug":483,"title":484,"excerpt":485,"featuredImage":486,"publishedAt":487},"23","source-of-truth-enterprise-intelligence-platform","Izvor istine Platforma za preduzetničku inteligenciju","Samostalno hostovana platforma za poslovnu inteligenciju vođena dokazima koja pretvara interno znanje kompanije, dokumente i poslovne podatke u sledljivu inteligenciju za istraživanje, odlučivanje, praćenje i kontrolisano izvršavanje AI-ja.","\u002Fuploads\u002F2026\u002F10\u002Fsource-of-truth-enterprise-intelligence-platform-1791975594140-vygojf.webp","2026-10-14T06:27:00.000Z",{"id":489,"slug":490,"title":491,"excerpt":492,"featuredImage":493,"publishedAt":494},"14","digitalisierungsportal-archiv-museum-bibliothek-ead-lido-mets-mods","Дигитални портал за архиву музеј и библиотеку","Дигитални Музеј се бави дигитализацијом и научним радом колекција, објеката, архива, библиотека и музеја.","\u002Fuploads\u002F2019\u002F04\u002F2019-11-21_101547_digital.deutsches-museum.de_-1.webp","2025-10-30T11:36:00.000Z",{"id":496,"slug":497,"title":498,"excerpt":499,"featuredImage":500,"publishedAt":494},"12","seo-sem-branding-mobile-webseite-muenchen","SEO Mobilna veb aplikacija Minhen","SEO za mobilne veb aplikacije u Minhenu: čista indeksacija, Analitika, strukturisane sitemape i optimizacija za Google vesti kao solidan temelj za održivu vidljivost.","\u002Fuploads\u002F2014\u002F09\u002FSEO-Mobile-Webapplikation-Muenchen-www.stajic.de_4.webp",{"id":502,"slug":503,"title":184,"excerpt":504,"featuredImage":505,"publishedAt":506},"22","from-raw-data-to-verifiable-ai-context-a-practical-architecture-for-agent-ready-information","AI sistemi uglavnom ne zakažu zato što im nedostaje više teksta. Oni zakažu zato što identitet, poreklo, konflikti, nepoznanice i validnost često nedostaju u kontekstu koji dobijaju. Ovaj članak dokumentuje praktičnu arhitekturu za pretvaranje heterogenih poslovnih podataka u kontrolisane, višekratno upotrebljive informacione objekte za ljude, aplikacije i agente.","\u002Fuploads\u002F2026\u002F09\u002Ffrom-raw-data-to-verifiable-ai-context-a-practical-architecture-for-agent-ready-information-1790741906168-mo6sw7.webp","2026-09-30T00:16:00.000Z","fallback",[],[]]