{"id":9217,"date":"2025-05-28T14:15:41","date_gmt":"2025-05-28T12:15:41","guid":{"rendered":"https:\/\/pomoc.comarch.pl\/cee\/640\/?post_type=ht_kb&#038;p=9217"},"modified":"2025-05-28T14:15:50","modified_gmt":"2025-05-28T12:15:50","slug":"szukanie-fonetyczne","status":"publish","type":"ht_kb","link":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/szukanie-fonetyczne\/","title":{"rendered":"Szukanie fonetyczne"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Spis tre\u015bci<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Prze\u0142\u0105cznik Spisu Tre\u015bci\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/szukanie-fonetyczne\/#Grupa_docelowa\" >Grupa docelowa<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/szukanie-fonetyczne\/#Algorytmy_wyszukiwania_fonetycznego\" >Algorytmy wyszukiwania fonetycznego<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/szukanie-fonetyczne\/#Znane_ograniczenia_algorytmu_uzywanego_w_odniesieniu_do_sprawdzania_duplikatow\" >Znane ograniczenia algorytmu u\u017cywanego w odniesieniu do sprawdzania duplikat\u00f3w<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/szukanie-fonetyczne\/#Rejestrowanie_wlasnego_algorytmu_fonetycznego\" >Rejestrowanie w\u0142asnego algorytmu fonetycznego<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/szukanie-fonetyczne\/#Jednostki_biznesowe\" >Jednostki biznesowe<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/szukanie-fonetyczne\/#Model_danych\" >Model danych<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/szukanie-fonetyczne\/#Zarejestruj_atrybut_dla_wyszukiwania_fonetycznego\" >Zarejestruj atrybut dla wyszukiwania fonetycznego<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/szukanie-fonetyczne\/#Przyklad_aktualizacji_danych\" >Przyk\u0142ad aktualizacji danych<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/szukanie-fonetyczne\/#Modele_danych_dla_osob_i_organizacji\" >Modele danych dla os\u00f3b i organizacji<\/a><ul class='ez-toc-list-level-5' ><li class='ez-toc-heading-level-5'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/szukanie-fonetyczne\/#Instrukcja\" >Instrukcja<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/szukanie-fonetyczne\/#Aplikacja_w_tle_Aktualizacja_wartosci_fonetycznych\" >Aplikacja w tle Aktualizacja warto\u015bci fonetycznych<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/szukanie-fonetyczne\/#Atrybuty_fonetyczne_w_aplikacjach_typu_lista\" >Atrybuty fonetyczne w aplikacjach typu lista<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/szukanie-fonetyczne\/#Instrukcja_Konfiguracja_wyszukiwania_fonetycznego\" >Instrukcja: Konfiguracja wyszukiwania fonetycznego<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/szukanie-fonetyczne\/#Wymagania_wstepne\" >Wymagania wst\u0119pne<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/documentation\/szukanie-fonetyczne\/#Instrukcje\" >Instrukcje<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<p>Wyszukiwanie fonetyczne mo\u017ce by\u0107 u\u017cywane do znajdowania podobnych tekst\u00f3w. To specjalne wyszukiwanie mo\u017ce by\u0107 pomocne na przyk\u0142ad podczas wyszukiwania partner\u00f3w wed\u0142ug nazwy. Sprawdzanie duplikat\u00f3w, kt\u00f3re jest oddzieln\u0105 funkcj\u0105, jest od niego niezale\u017cne. Sprawdzanie duplikat\u00f3w mo\u017ce by\u0107 uzupe\u0142nione wyszukiwaniem fonetycznym. Aplikacja <em>Aktualizacja warto\u015bci fonetycznych<\/em> z algorytmami wyszukiwania fonetycznego jest dost\u0119pna do integracji wyszukiwania fonetycznego.<\/p>\n<p>Niniejszy dokument opisuje, w jaki spos\u00f3b mo\u017cna zintegrowa\u0107 wyszukiwanie fonetyczne i jakie \u015brodki nale\u017cy podj\u0105\u0107 w przypadku rozszerze\u0144 i konfiguracji.<\/p>\n<h3 id=\"grupa-docelowa\" ><span class=\"ez-toc-section\" id=\"Grupa_docelowa\"><\/span>Grupa docelowa<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Programi\u015bci<\/li>\n<li>Konsultanci<\/li>\n<\/ul>\n<h3 id=\"algorytmy-wyszukiwania-fonetycznego\" ><span class=\"ez-toc-section\" id=\"Algorytmy_wyszukiwania_fonetycznego\"><\/span>Algorytmy wyszukiwania fonetycznego<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Strategia wyszukiwania fonetycznego polega na wykorzystaniu wynik\u00f3w bada\u0144 z zakresu fonetyki i fonologii w celu okre\u015blenia fonetycznej (&#8222;tonalnej&#8221;) reprezentacji s\u0142owa. Aby znale\u017a\u0107 reprezentacj\u0119 fonetyczn\u0105, s\u0142owa s\u0105 dzielone na fonemy (predefiniowane znaki, np. cyfry). W tym celu wykorzystywane s\u0105 r\u00f3\u017cne algorytmy specyficzne dla danego j\u0119zyka.<\/p>\n<p>Nast\u0119puj\u0105ce algorytmy mo\u017cna doda\u0107 do systemu za pomoc\u0105 aplikacji <em>Algorytmy wyszukiwania fonetycznego<\/em>:<\/p>\n<ul>\n<li>K\u00f6lner Phonetik dla j\u0119zyka niemieckiego<\/li>\n<li>Soundex dla j\u0119zyka angielskiego<\/li>\n<\/ul>\n<p>Je\u015bli aplikacja jest zainstalowana, algorytmy mo\u017cna wybra\u0107 w aplikacji <em>Konfiguracja<\/em>, funkcja g\u0142\u00f3wna <em>Podstawowe<\/em>, funkcja <em>Og\u00f3lne<\/em>, w polu <em>Algorytm wyszukiwania fonetycznego<\/em>. W przeciwnym razie pole zawiera wpis <em>Brak<\/em>.<\/p>\n<p>Alternatywnie mo\u017cna u\u017cy\u0107 w\u0142asnych algorytm\u00f3w fonetycznych do wyszukiwania fonetycznego.<\/p>\n<h4 id=\"znane-ograniczenia-algorytmu-uzywanego-w-odniesieniu-do-sprawdzania-duplikatow\" ><span class=\"ez-toc-section\" id=\"Znane_ograniczenia_algorytmu_uzywanego_w_odniesieniu_do_sprawdzania_duplikatow\"><\/span>Znane ograniczenia algorytmu u\u017cywanego w odniesieniu do sprawdzania duplikat\u00f3w<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Algorytmy obliczania fonem\u00f3w mog\u0105 identyfikowa\u0107 duplikaty, kt\u00f3rych u\u017cytkownik si\u0119 nie spodziewa.<\/p>\n<p><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Warto\u015bci fonetyczne (fonetyka kolo\u0144ska) nazwisk<\/p>\n<ul>\n<li data-start=\"251\" data-end=\"270\"><strong data-start=\"294\" data-end=\"307\">Jask\u00f3lska<\/strong> = 48274<\/li>\n<li data-start=\"318\" data-end=\"343\">\n<p data-start=\"320\" data-end=\"343\"><strong data-start=\"320\" data-end=\"333\">Jaskulska<\/strong> = 48274<\/p>\n<\/li>\n<\/ul>\n<p>Fonetyczna kontrola duplikat\u00f3w identyfikuje zatem nazwiska <strong data-start=\"294\" data-end=\"307\">Jask\u00f3lska <\/strong>i <strong style=\"font-size: revert; color: initial;\" data-start=\"320\" data-end=\"333\">Jaskulska<\/strong> <span style=\"font-size: revert; color: initial;\">jako duplikaty.<\/div><\/section><\/span><\/p>\n<section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">Je\u015bli algorytm wyszukiwania fonetycznego nie jest zintegrowany, sprawdzanie duplikat\u00f3w powinno by\u0107 skonfigurowane bez wyszukiwania fonetycznego, poniewa\u017c w przeciwnym razie zostan\u0105 zwr\u00f3cone nieoczekiwane wyniki. Warto\u015bci wyszukiwania fonetycznego bez odpowiedniego algorytmu s\u0105 technicznie r\u00f3wnowa\u017cne zeru (niezdefiniowane).<\/div><\/section>\n<h4 id=\"rejestrowanie-wlasnego-algorytmu-fonetycznego\" ><span class=\"ez-toc-section\" id=\"Rejestrowanie_wlasnego_algorytmu_fonetycznego\"><\/span>Rejestrowanie w\u0142asnego algorytmu fonetycznego<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>U\u017cytkownik mo\u017ce opracowa\u0107 i zintegrowa\u0107 w\u0142asny algorytm fonetyczny na potrzeby wyszukiwania. W tym celu dost\u0119pny jest nast\u0119puj\u0105cy Hook:<\/p>\n<p>com.cisag.app.general.hook.log.PhoneticAlgorithmHook<\/p>\n<p>Ten Hook nale\u017cy do definicji Hook Contract Phonetic algorithm<\/p>\n<p>(com.cisag.app.general.hook.log.PhoneticAlgorithm).<\/p>\n<p>Po zarejestrowaniu nowej implementacji Hook nale\u017cy utworzy\u0107 nowe fonemy (warto\u015bci zakodowane fonetycznie) dla wszystkich istniej\u0105cych instancji podmiot\u00f3w biznesowych, kt\u00f3re maj\u0105 atrybuty istotne dla wyszukiwania fonetycznego. Proces ten musi zosta\u0107 przeprowadzony poprzez aktualizacj\u0119 danych (wi\u0119cej informacji w rozdziale <a href=\"#a1\"><i>Aplikacja w tle Aktualizacja warto\u015bci fonetycznych<\/i><\/a>).<\/p>\n<p>Aby wygenerowa\u0107 warto\u015bci fonetyczne, taka aktualizacja danych musi wywo\u0142a\u0107 nast\u0119puj\u0105c\u0105 metod\u0119 z odniesieniem do nowego algorytmu:<\/p>\n<p>Method:<\/p>\n<p>com.cisag.app.general.log.PhoneticUpdateLogic.update(String algorithm)<\/p>\n<p>Klasa logiczna:<\/p>\n<p>com.cisag.app.general.log.PhoneticUpdateLogic<\/p>\n<p>Parametr algorithm jest opisem danych nowego algorytmu (wi\u0119cej informacji mo\u017cna znale\u017a\u0107 w definicji Hook Contract <em>Phonetic algorithm<\/em>).<\/p>\n<p>Po zarejestrowaniu nowego algorytmu za po\u015brednictwem Hook i wykonaniu aktualizacji danych, nowy algorytm fonetyczny mo\u017cna wybra\u0107 w aplikacji <em>Konfiguracja<\/em>.<\/p>\n<p>Przyk\u0142ad aktualizacji danych<\/p>\n<p>Przyk\u0142ad aktualizacji danych w celu wygenerowania warto\u015bci fonetycznych dla niestandardowego algorytmu fonetycznego:<\/p>\n<p>public class UpdateNewPhoneticAlgorithm extends CisUpdateBatchApplication {<\/p>\n<p>@Override<\/p>\n<p>public short execute() {<\/p>\n<p>PhoneticUpdateLogic updateLogic = PhoneticUpdateLogic.getInstance();<\/p>\n<p>updateLogic.update(&#8222;com.cisag.xyz.general: NewPhoneticAlgorithm.lt&#8221;);<\/p>\n<p>return CisUpdateApplicationConstants.State.SUCCESS;<\/p>\n<p>}<\/p>\n<section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">Aplikacja dzia\u0142aj\u0105ca w tle <em>Aktualizacja warto\u015bci fonetycznych<\/em>\u00a0rejestruje tylko zmiany danych podczas dzia\u0142ania systemu w celu zmiany lub utworzenia dla nich fonem\u00f3w. Rejestrowane s\u0105 tylko zmiany atrybut\u00f3w zarejestrowanych w tym celu.<\/p>\n<p>Je\u015bli dane, kt\u00f3rych warto\u015bci fonetyczne nie zosta\u0142y wygenerowane za pomoc\u0105 aktualizacji danych, znajduj\u0105 si\u0119 ju\u017c w systemie przed aktywacj\u0105 funkcji fonetycznej, nie s\u0105 one dost\u0119pne dla wyszukiwania fonetycznego. Aplikacja dzia\u0142aj\u0105ca w tle mo\u017ce je wygenerowa\u0107 tylko wtedy, gdy zosta\u0142y zmienione podczas dzia\u0142ania systemu.<\/div><\/section>\n<h3 id=\"jednostki-biznesowe\" ><span class=\"ez-toc-section\" id=\"Jednostki_biznesowe\"><\/span>Jednostki biznesowe<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Wyszukiwania fonetycznego mo\u017cna u\u017cywa\u0107 dla nast\u0119puj\u0105cych jednostek biznesowych:<\/p>\n<ul>\n<li><strong>Partner<\/strong>:<\/li>\n<\/ul>\n<p>com.cisag.app.general.obj.Partner<\/p>\n<ul>\n<li><strong>Adresy<\/strong>:<\/li>\n<\/ul>\n<p>com.cisag.app.general.obj.AddressData<\/p>\n<h3 id=\"model-danych\" ><span class=\"ez-toc-section\" id=\"Model_danych\"><\/span>Model danych<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Do przechowywania fonem\u00f3w wymagana jest oddzielna tabela zale\u017cna dla ka\u017cdej jednostki biznesowej, kt\u00f3ra ma by\u0107 brana pod uwag\u0119 w wyszukiwaniu fonetycznym. Fonemy pasuj\u0105ce do warto\u015bci atrybut\u00f3w s\u0105 przechowywane w tej tabeli dla wszystkich atrybut\u00f3w istotnych fonetycznie.<\/p>\n<p>Nast\u0119puj\u0105ce podmioty gospodarcze maj\u0105 tabele zale\u017cne dla wyszukiwania fonetycznego:<\/p>\n<ul>\n<li><strong>Partner<\/strong>:<\/li>\n<\/ul>\n<p>com.cisag.app.general.obj.Partner<\/p>\n<ul>\n<li><strong>Adresy<\/strong>:<\/li>\n<\/ul>\n<p>com.cisag.app.general.obj.AddressData<\/p>\n<p>Mo\u017cliwe jest zarejestrowanie dodatkowych atrybut\u00f3w dla wyszukiwania fonetycznego dla tych jednostek biznesowych.<\/p>\n<h4 id=\"zarejestruj-atrybut-dla-wyszukiwania-fonetycznego\" ><span class=\"ez-toc-section\" id=\"Zarejestruj_atrybut_dla_wyszukiwania_fonetycznego\"><\/span>Zarejestruj atrybut dla wyszukiwania fonetycznego<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Atrybuty jednostek biznesowych dla wyszukiwania fonetycznego s\u0105 rejestrowane poprzez implementacj\u0119 interfejsu Java class com.cisag.app.general.hook.log.PhoneticRegistryHook w definicji Hook Contract\u00a0<em>Rejestracje<\/em> (com.cisag.app.general.hook.log.RegistryExtensions).<\/p>\n<p>Po rejestracji za po\u015brednictwem implementacji Hook, warto\u015bci fonetyczne dla zarejestrowanego atrybutu musz\u0105 zosta\u0107 wygenerowane dla wszystkich istniej\u0105cych instancji danego obiektu biznesowego. W tym celu nale\u017cy zaimplementowa\u0107 aktualizacj\u0119 danych. Musi ona wywo\u0142a\u0107 nast\u0119puj\u0105c\u0105 metod\u0119, aby wygenerowa\u0107 warto\u015bci fonetyczne dla nowo zarejestrowanego atrybutu:<\/p>\n<p>Metoda:<\/p>\n<p>update(Class&lt;? extends CisObject&gt;, String&#8230;)<\/p>\n<p>Klasa logiczna:<\/p>\n<p>com.cisag.app.general.log.PhoneticUpdateLogic<\/p>\n<h4 id=\"przyklad-aktualizacji-danych\" ><span class=\"ez-toc-section\" id=\"Przyklad_aktualizacji_danych\"><\/span>Przyk\u0142ad aktualizacji danych<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Przyk\u0142ad aktualizacji danych w celu wygenerowania warto\u015bci fonetycznych dla nowo zarejestrowanego atrybutu:<\/p>\n<p>public class UpdatePartner extends CisUpdateBatchApplication {<\/p>\n<p>@Override<\/p>\n<p>public short execute() {<\/p>\n<p>PhoneticUpdateLogic updateLogic = PhoneticUpdateLogic.getInstance();<\/p>\n<p>updateLogic.update(Partner.class, new String[] {<\/p>\n<p>&#8222;person.middleNames&#8221;,<\/p>\n<p>&#8222;name&#8221; });<\/p>\n<p>return CisUpdateApplicationConstants.State.SUCCESS;<\/p>\n<p>}<\/p>\n<section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">Aplikacja dzia\u0142aj\u0105ca w tle <em>Aktualizacja warto\u015bci fonetycznych<\/em> rejestruje tylko zmiany danych podczas dzia\u0142ania systemu w celu zmiany lub utworzenia dla nich fonem\u00f3w. Rejestrowane s\u0105 tylko zmiany atrybut\u00f3w zarejestrowanych w tym celu.<\/p>\n<p>Je\u015bli dane, kt\u00f3rych warto\u015bci fonetyczne nie zosta\u0142y wygenerowane za pomoc\u0105 aktualizacji danych, znajduj\u0105 si\u0119 ju\u017c w systemie przed aktywacj\u0105 funkcji fonetycznej, nie s\u0105 one dost\u0119pne dla wyszukiwania fonetycznego. Aplikacja dzia\u0142aj\u0105ca w tle mo\u017ce je r\u00f3wnie\u017c wygenerowa\u0107 tylko wtedy, gdy zosta\u0142y zmienione podczas dzia\u0142ania systemu.<\/div><\/section>\n<h4 id=\"modele-danych-dla-osob-i-organizacji\" ><span class=\"ez-toc-section\" id=\"Modele_danych_dla_osob_i_organizacji\"><\/span>Modele danych dla os\u00f3b i organizacji<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Osoby i organizacje u\u017cywaj\u0105 r\u00f3\u017cnych modeli danych. Oznacza to, \u017ce bezpo\u015brednie por\u00f3wnanie nie jest mo\u017cliwe. Je\u015bli takie por\u00f3wnanie jest wymagane, nale\u017cy zintegrowa\u0107 indywidualne wyszukiwanie fonetyczne.<\/p>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Nale\u017cy por\u00f3wna\u0107 zawarto\u015b\u0107 nast\u0119puj\u0105cych p\u00f3l:<\/p>\n<ul>\n<li>Pole &#8222;Nazwisko&#8221; (typ partnera: osoba)<\/li>\n<li>Pole &#8222;Nazwa 1&#8221; (typ partnera: organizacja)<\/li>\n<\/ul>\n<h5 id=\"instrukcja\" ><span class=\"ez-toc-section\" id=\"Instrukcja\"><\/span>Instrukcja<span class=\"ez-toc-section-end\"><\/span><\/h5>\n<ol>\n<li>Nale\u017cy rozszerzy\u0107 obiekt biznesowy <em>Partner<\/em> o rozszerzenie:<\/li>\n<\/ol>\n<p>String <em>normalisedName<\/em><\/p>\n<ol start=\"2\">\n<li>Nast\u0119pnie nale\u017cy zaimplementowa\u0107 Hook aktualizacji u partnera\n<ul>\n<li>Nazwisko jest zapisywane w polu <em>normalisedName<\/em> dla os\u00f3b. W przypadku organizacji zapisywana jest nazwa 1, ale jest ona wolna od popularnych skr\u00f3t\u00f3w (np. <em>SA<\/em>,<em> sp. z o.o.<\/em>, <em>sp.k.<\/em> itp.).<br \/>\nHook Contract:<br \/>\ncom.cisag.app.general.partner.hook.log.Partner<br \/>\nInterfejs Hook:<br \/>\ncom.cisag.app.general.partner.hook.log.PartnerPrepareUpdateHook<\/li>\n<\/ul>\n<\/li>\n<li>Nowy atrybut <em>normalisedName<\/em> musi zosta\u0107 zarejestrowany jako pole fonetyczne:\n<ul>\n<li>Hook Contract:<br \/>\ncom.cisag.app.general.hook.log.RegistryExtensions<br \/>\nInterfejs Hook:<br \/>\ncom.cisag.app.general.hook.log.PhoneticRegistryHook<\/li>\n<\/ul>\n<\/li>\n<li>Nast\u0119pnie nale\u017cy zaimplementowa\u0107 aktualizacj\u0119 danych, aby wype\u0142ni\u0107 <em>normalisedName<\/em> i ponownie obliczy\u0107 warto\u015bci fonetyczne:\n<ul>\n<li>Wywo\u0142anie aktualizacji danych z<br \/>\ncom.cisag.app.general.log.PhoneticUpdateLogic.update(Class&lt;? extends CisObject&gt;, String &#8230;)<\/li>\n<\/ul>\n<\/li>\n<li>Mo\u017cna u\u017cy\u0107 nowego pola do sprawdzania duplikat\u00f3w w aplikacji <em>Konfiguracja<\/em>.<\/li>\n<\/ol>\n<h4 id=\"aplikacja-w-tle-aktualizacja-wartosci-fonetycznych\" ><span class=\"ez-toc-section\" id=\"Aplikacja_w_tle_Aktualizacja_wartosci_fonetycznych\"><\/span><a id=\"a1\"><\/a>Aplikacja w tle <em>Aktualizacja warto\u015bci fonetycznych<\/em><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Aplikacja dzia\u0142aj\u0105ca w tle generuje nowe fonemy (warto\u015bci zakodowane fonetycznie) dla instancji jednostek biznesowych, kt\u00f3re maj\u0105 odpowiednie atrybuty do wyszukiwania fonetycznego i zapisuje je w odpowiednich tabelach zale\u017cnych.<\/p>\n<p>Ta aplikacja dzia\u0142aj\u0105ca w tle mo\u017ce zosta\u0107 wykonana jednorazowo lub na sta\u0142e:<\/p>\n<ul>\n<li><strong>Wykonanie jednorazowe<\/strong> &#8212; w przypadku jednorazowego wykonania, warto\u015bci fonetyczne s\u0105 generowane dla wszystkich instancji, kt\u00f3re zosta\u0142y dodane lub kt\u00f3rych atrybuty zosta\u0142y zmienione od ostatniego wykonania tej aplikacji w tle.<\/li>\n<li><span style=\"font-size: revert; color: initial;\"><strong>Sta\u0142e wykonanie<\/strong> &#8212; j<\/span>e\u015bli aplikacja jest stale aktywna w tle, fonemy nowych instancji s\u0105 dodawane natychmiast lub generowane i zapisywane bezpo\u015brednio po zmianie atrybut\u00f3w. Ma to t\u0119 zalet\u0119, \u017ce wyszukiwanie fonetyczne mo\u017ce by\u0107 u\u017cyte natychmiast dla wszystkich nowych lub zmienionych instancji.<\/li>\n<\/ul>\n<p><section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">Dane, kt\u00f3re zosta\u0142y utworzone lub zmienione mi\u0119dzy dwiema wersjami tej aplikacji dzia\u0142aj\u0105cej w tle, mo\u017cna znale\u017a\u0107 za pomoc\u0105 wyszukiwania fonetycznego dopiero po pomy\u015blnym uruchomieniu tej aplikacji dzia\u0142aj\u0105cej w tle.<\/div><\/section><\/p>\n<h3 id=\"atrybuty-fonetyczne-w-aplikacjach-typu-lista\" ><span class=\"ez-toc-section\" id=\"Atrybuty_fonetyczne_w_aplikacjach_typu_lista\"><\/span>Atrybuty fonetyczne w aplikacjach typu lista<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>W aplikacjach typu <em>Lista<\/em> mo\u017cna u\u017cywa\u0107 zarejestrowanych atrybut\u00f3w do wyszukiwania dok\u0142adnego lub fonetycznego. Aby udost\u0119pni\u0107 t\u0119 funkcj\u0119, nale\u017cy wykona\u0107 nast\u0119puj\u0105ce kroki.<\/p>\n<ol>\n<li>Doda\u0107 do wyszukiwania odpowiedni\u0105 zale\u017cno\u015b\u0107 dla warto\u015bci fonetycznych.<\/li>\n<\/ol>\n<p><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/div><\/section>\/* warto\u015bci fonetyczne dla nazwy partnera*\/<\/p>\n<p>LEFT OUTER JOIN com.cisag.app.general.obj.PartnerPhonetic PHONETIC_NAME ON PHONETIC_NAME:guid = PARTNER:guid<\/div><\/section>\n<section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\">Dla ka\u017cdego atrybutu wymagane jest jedno OUTER JOIN.<\/div><\/section>\n<ol start=\"2\">\n<li>Wprowadzi\u0107 atrybut wirtualny. Logiczny typ danych dla tego atrybutu musi by\u0107 pochodn\u0105 logicznego typu danych oryginalnego atrybutu.<\/li>\n<\/ol>\n<section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\">Na przyk\u0142ad logiczny typ danych &#8222;com.cisag.app.crm.cockpit.PartnerNamePhonetic&#8221; dziedziczy z logicznego typu danych &#8222;com.cisag.app.general.PartnerName&#8221;.<\/div><\/section>\n<p>Opis danych musi mie\u0107 w\u0142asn\u0105 implementacj\u0119 wyra\u017cenia filtruj\u0105cego. Implementacja ta musi by\u0107 pochodn\u0105 klasy abstrakcyjnej com.cisag.app.general.cockpit.gui.PhoneticFilterExpressionEditorFactory z odpowiednio zaimplementowanymi metodami.<\/p>\n<ol start=\"3\">\n<li>Zdefiniowa\u0107 cztery podatrybuty dla ka\u017cdego atrybutu wirtualnego zgodnie z nast\u0119puj\u0105c\u0105 konwencj\u0105 nazewnictwa:<\/li>\n<\/ol>\n<table style=\"border-collapse: collapse; width: 100%; height: 115px;\">\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Nazwa<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Wyra\u017cenie<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">algorithm<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PHONETIC_ALIAS : algorithm<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">attribute<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PHONETIC_ALIAS : attribute<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">phoneticValue<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">phoneticValue<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">value<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">BO_ALIAS : boAttributeName<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Przyk\u0142ad dla Partner:name<\/p>\n<table style=\"border-collapse: collapse; width: 100%; height: 115px;\">\n<tbody>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Nazwa<\/strong><\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\"><strong>Wyra\u017cenie<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">algorithm<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PHONETIC_NAME : algorithm<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">attribute<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PHONETIC_NAME : attribute<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">phoneticValue<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PHONETIC_NAME : phoneticValue<\/td>\n<\/tr>\n<tr style=\"height: 23px;\">\n<td style=\"width: 50%; height: 23px; border-style: outset;\">value<\/td>\n<td style=\"width: 50%; height: 23px; border-style: outset;\">PARTNER : name<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Wszystkie atrybuty, w tym atrybut wirtualny, musz\u0105 by\u0107 oznaczone jako filtrowane.<\/p>\n<p>Wi\u0119cej informacji na temat rozwoju mo\u017cna znale\u017a\u0107 w artykule <em>Ustawienia aplikacji typu Lista<\/em>.<\/p>\n<h3 id=\"instrukcja-konfiguracja-wyszukiwania-fonetycznego\" ><span class=\"ez-toc-section\" id=\"Instrukcja_Konfiguracja_wyszukiwania_fonetycznego\"><\/span>Instrukcja: Konfiguracja wyszukiwania fonetycznego<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4 id=\"wymagania-wstepne\" ><span class=\"ez-toc-section\" id=\"Wymagania_wstepne\"><\/span>Wymagania wst\u0119pne<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Aby korzysta\u0107 z wyszukiwania fonetycznego, w systemie musi by\u0107 zainstalowana aplikacja <em>Algorytmy wyszukiwania fonetycznego<\/em>. Tylko wtedy mo\u017cna zapisa\u0107 algorytm wyszukiwania fonetycznego w aplikacji <em>Konfiguracja<\/em>.<\/p>\n<h4 id=\"instrukcje\" ><span class=\"ez-toc-section\" id=\"Instrukcje\"><\/span>Instrukcje<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ol>\n<li>Pierwszym krokiem jest otworzenie aplikacji <em>Konfiguracja<\/em>.<\/li>\n<li>W funkcji <em>Podstawowe<\/em>, podfunkcji <em>Og\u00f3lne<\/em>, w polu <em>Algorytm wyszukiwania fonetycznego<\/em>, nale\u017cy wybra\u0107\u00a0\u017c\u0105dany algorytm wyszukiwania fonetycznego. Mo\u017ce si\u0119 on r\u00f3\u017cni\u0107 w zale\u017cno\u015bci od organizacji.<\/li>\n<li>Nast\u0119pnie nale\u017cy przeprowadzi\u0107 nast\u0119puj\u0105c\u0105 aktualizacj\u0119 danych w celu zainicjowania wyszukiwania fonetycznego dla atrybut\u00f3w fonetycznych obiektu biznesowego <em>Partner<\/em>:\n<ul>\n<li>Utw\u00f3rz warto\u015bci fonetyczne dla obiektu biznesowego Partner<br \/>\ncom.cisag.app.update.log.UPDADV067209Partner<\/li>\n<\/ul>\n<\/li>\n<li>Nast\u0119pnie nale\u017cy wykona\u0107 aktualizacj\u0119 danych i zainicjowa\u0107 wyszukiwanie fonetyczne dla atrybut\u00f3w fonetycznych obiektu biznesowego <em>Adresy<\/em>:\n<ul>\n<li>Utw\u00f3rz warto\u015bci fonetyczne dla obiektu biznesowego Adres<br \/>\n(com.cisag.app.update.log.UPDADV067209AddressData)<\/li>\n<\/ul>\n<\/li>\n<li>Nale\u017cy zdefiniowa\u0107 wymagane kontrole duplikat\u00f3w w aplikacji <em>Konfiguracja<\/em>, funkcja <em>Podstawowe<\/em>, podfunkcja <em>Partner<\/em>. Wi\u0119cej informacji na ten temat mo\u017cna znale\u017a\u0107 w nast\u0119puj\u0105cej dokumentacji: <em>Konfiguracja: Podstawowe<\/em>, rozdzia\u0142: <em>Sekcja Duplikaty<\/em>.<\/li>\n<li>Nale\u017cy uruchomi\u0107 aplikacj\u0119 w tle <em>Aktualizacja warto\u015bci fonetycznych<\/em>.<\/li>\n<\/ol>\n","protected":false},"author":27,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"footnotes":""},"class_list":["post-9217","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-interfejsy-do-systemow-zarzadzania-przedsiebiorstwem"],"_links":{"self":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb\/9217","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb"}],"about":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/comments?post=9217"}],"version-history":[{"count":24,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb\/9217\/revisions"}],"predecessor-version":[{"id":31894,"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/ht_kb\/9217\/revisions\/31894"}],"wp:attachment":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/640\/index.php\/wp-json\/wp\/v2\/media?parent=9217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}