Autor Téma: Ako na fulltext vyhladavanie v DB Firebird z Delphi  (Přečteno 2761 krát)

Offline František

  • Guru
  • *****
  • Příspěvků: 523
  • Karma: 6
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Ako na fulltext vyhladavanie v DB Firebird z Delphi
« kdy: 08-09-2015, 13:22:38 »
našiel som toto: http://www.firebirdsql.org/en/sphinx-full-text-search/, ale nepodarilo sa mi to rozchodiť a ani pochopiť, viete mi to nejako prerozprávať?

Offline František

  • Guru
  • *****
  • Příspěvků: 523
  • Karma: 6
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:Ako na fulltext vyhladavanie v DB Firebird z Delphi
« Odpověď #1 kdy: 08-09-2015, 21:52:17 »
este ako doplnokk musim dodat, ze potrebujem vyhladavat s "like" a "%" neindexovatelne polozky o VARCHAR(3000).. mate nejake napady? dostal som aj radu ze FB treba nahradit riadnou DB (myslene MS alebo My)

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1446
  • Karma: 34
    • Pepak.net
Re:Ako na fulltext vyhladavanie v DB Firebird z Delphi
« Odpověď #2 kdy: 09-09-2015, 09:02:52 »
este ako doplnokk musim dodat, ze potrebujem vyhladavat s "like" a "%" neindexovatelne polozky o VARCHAR(3000)..
Takže potřebuješ fulltext nebo nepotřebuješ? V prvním příspěvku říkáš, že potřebuješ, v druhém, že naopak fulltext je ti na nic.

Citace
dostal som aj radu ze FB treba nahradit riadnou DB (myslene MS alebo My)
(podtržení moje) LOL!

Offline František

  • Guru
  • *****
  • Příspěvků: 523
  • Karma: 6
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:Ako na fulltext vyhladavanie v DB Firebird z Delphi
« Odpověď #3 kdy: 09-09-2015, 12:50:26 »
mam VARCHAR(3000) UNICODE_FSS a select pomocou "like" trva a trva niekedy aj 50 sec, mam to na SSD a CPU stvorjadro, testovane na kadecom aj i7-5820K (6c), 2x XEON 2620, a inych ... pomohlo bolo to len 15s
« Poslední změna: 09-09-2015, 12:52:31 od František »

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1446
  • Karma: 34
    • Pepak.net
Re:Ako na fulltext vyhladavanie v DB Firebird z Delphi
« Odpověď #4 kdy: 09-09-2015, 13:05:13 »
To je informace na nic. Jaká je struktura obsahu těch varcharů a co v nich vyhledáváš? Zatím o tom obsahu nevíme nic a o vyhledávání jen tolik, že "používá LIKE a %", což je jen nepatrně lepší než nic. Jaká data budeš chtít prohledávat a co v nich chceš vyhledávat? Podle toho se dá rozhodnout, jaké řešení použít. Ale patrně bude potřeba klasický fulltext.

Jinak počet jader je irelevantní, protože Firebird thready moc neumí - v lepším případě jde thread na připojení, ale běžné je i thread na databázi. V defaultní konfiguraci to tak je vždy.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2611
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Ako na fulltext vyhladavanie v DB Firebird z Delphi
« Odpověď #5 kdy: 09-09-2015, 13:47:37 »
ale nepodarilo sa mi to rozchodiť a ani pochopiť,
Je treba si uvedomit, co je to full text search
- pokud pouzijes like na varchar, tak to neni zadny full text search - to proste hledas vyskyt jedne posloupnosti znaku v jine posloupnosti znaku
- zatimco u fulltextoveho vyhledavani se hledany text rozbije na token a pak se hleda vyskyt tech token v jinem textu. A aby to netrvalo tak dlouho, tak se sestavuji tzv. invertovane indexy, coz vypada tak, ze se text, ktery se ma prohledavat, rozbije na tokeny (slova), balast se zahodi a ze zbytku tokenu (slov) se vytvori index, ve kterem bude poznamenano, kde vsude se vyskytuje. Hledany text se pak stejnym zpusobem rozbije na token a ty se samostatne hledaji v tom indexu, ze ktereho si vytahaji, kde se vyskytuji. A podle toho se zobrazuje vysledek.

Ten Sphinx je samostatny "server", ktery na zaklade konfigurace umi vytvorit pro pozadovana pole v  podstate v libovolnem RDBMS invertovane indexy a umi v nich hledat. A komunikujes s nim pres jeho specificke API.

Nebo muzes pouzit nejakou full-textovou knihovnu jako je napr. Apache Lucene - tusim se pokus o port do Delphi se jmenuje Mutis

A nebo si takovou knihovnu muzes napsat sam.

A nebo muzes prejit na RDBMS, ktery fulltext podporuje primo.

Offline František

  • Guru
  • *****
  • Příspěvků: 523
  • Karma: 6
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:Ako na fulltext vyhladavanie v DB Firebird z Delphi
« Odpověď #6 kdy: 09-09-2015, 19:58:09 »
našiel som toto: http://www.firebirdsql.org/en/sphinx-full-text-search/, ale nepodarilo sa mi to rozchodiť a ani pochopiť, viete mi to nejako prerozprávať? a ako to vyuzit v delfi? alebo nieco podobne pre firebird?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4546
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Ako na fulltext vyhladavanie v DB Firebird z Delphi
« Odpověď #7 kdy: 09-09-2015, 20:25:08 »
A na toto si natrafil http://www.firebirdfaq.org/faq328/ ?
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline František

  • Guru
  • *****
  • Příspěvků: 523
  • Karma: 6
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:Ako na fulltext vyhladavanie v DB Firebird z Delphi
« Odpověď #8 kdy: 10-09-2015, 14:35:41 »
Poor
Rated 1 time
ďakujem Stanislav, konečne niečo konštruktívne, aj keď ...

no a ty si to implementoval/riešil alebo len gúúglil

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4546
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Ako na fulltext vyhladavanie v DB Firebird z Delphi
« Odpověď #9 kdy: 10-09-2015, 15:00:50 »
Len hľadal.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

frantisek.sk

  • Host
Re:Ako na fulltext vyhladavanie v DB Firebird z Delphi
« Odpověď #10 kdy: 21-09-2015, 13:33:59 »
takze neviem co dalej, ostat pri Firebirde alebo ist niekam inam ... a kam