Π’Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ‚Ρ€Π°Ρ‚ΠΈΠ»ΠΈ часы Π½Π° поиск Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² 1Π‘, пСрСбирая сотни строк Π² справочниках ΠΈΠ»ΠΈ рСгистрах? Или ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Π° ΠΏΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ названия, Π½ΠΎ систСма ΡƒΠΏΠΎΡ€Π½ΠΎ Π²Ρ‹Π΄Π°Π²Π°Π»Π° пустой Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚? Если Π΄Π°, Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΆΠ΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ полнотСкстовый поиск.

Π’ стандартных конфигурациях 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ поиск часто Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ "Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ совпадСния" β€” систСма ΠΈΡ‰Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ записи, Π³Π΄Π΅ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ тСкст ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ совпадаСт с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Π±Π°Π·Π΅. Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для строгих запросов, Π½ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ бСсполСзно, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠΎ частичному описанию, ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠ΅ ΠΈΠ»ΠΈ синониму. Π—Π΄Π΅ΡΡŒ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ полнотСкстовый поиск β€” инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ вхоТдСния, Π½ΠΎ ΠΈ морфологичСскиС Ρ„ΠΎΡ€ΠΌΡ‹ слов, синонимы, Π° ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π°ΠΆΠ΅ контСкст.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ:

  • πŸ” Π§Π΅ΠΌ полнотСкстовый поиск отличаСтся ΠΎΡ‚ стандартного Π² 1Π‘ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ
  • ⚑ Как Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ поиск для Ρ€Π°Π·Π½Ρ‹Ρ… вСрсий ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (8.3, 8.3.20+)
  • ⚠️ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ ΠΏΠΈΡˆΡƒΡ‚ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ
  • πŸ› οΈ ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для ускорСния поиска Π±Π΅Π· полнотСкстового индСкса

1. ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹ΠΉ vs стандартный поиск: Π² Ρ‡Ρ‘ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Ρ‘ΠΌ с простого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² Π±Π°Π·Π΅ 1Π‘:БухгалтСрия Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ "ООО Ромашка-Π’Ρ€Π΅ΠΉΠ΄". Если Π²Ρ‹ Π²Π²Π΅Π΄Ρ‘Ρ‚Π΅ Π² строку поиска:

  • πŸ”Ή "Ромашка" β€” стандартный поиск Π½Π°ΠΉΠ΄Ρ‘Ρ‚ запись (Ссли ΠΈΡ‰Π΅Ρ‚ ΠΏΠΎ Π½Π°Ρ‡Π°Π»Ρƒ строки)
  • πŸ”Ή "Π’Ρ€Π΅ΠΉΠ΄" β€” стандартный поиск Π½Π΅ Π½Π°ΠΉΠ΄Ρ‘Ρ‚ запись (ΠΈΡ‰Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Π½Π°Ρ‡Π°Π»Ρƒ)
  • πŸ”Ή "Ρ€ΠΎΠΌΠ°ΡˆΠΊΠ° Ρ‚Ρ€Π΅ΠΉΠ΄" β€” стандартный поиск Π²Π΅Ρ€Π½Ρ‘Ρ‚ пустой Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
  • πŸ”Ή "Ρ†Π²Π΅Ρ‚ΠΎΠΊ" β€” Π½ΠΈ ΠΎΠ΄ΠΈΠ½ поиск Π½Π΅ Π½Π°ΠΉΠ΄Ρ‘Ρ‚, Π½ΠΎ полнотСкстовый ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ синонимы, Ссли ΠΎΠ½ΠΈ Π·Π°Π΄Π°Π½Ρ‹

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ вас Π² Π±Π°Π·Π΅ 50 000 ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ², ΠΈ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π½Π°ΠΉΡ‚ΠΈ "ООО Астра-Логистик", помня Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ Π±Ρ‹Π»ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€ΠΎ "Π·Π²Ρ‘Π·Π΄Ρ‹" ΠΈΠ»ΠΈ "Ρ†Π²Π΅Ρ‚Ρ‹". Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ поиск бСсполСзСн. ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΆΠ΅ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚:

  • πŸ“Œ ΠœΠΎΡ€Ρ„ΠΎΠ»ΠΎΠ³ΠΈΡŽ: Π½Π°ΠΉΠ΄Ρ‘Ρ‚ "Астра" ΠΏΠΎ запросу "астры" ΠΈΠ»ΠΈ "астрС"
  • πŸ“Œ ЧастичныС совпадСния: Π½Π°ΠΉΠ΄Ρ‘Ρ‚ "Астра-Логистик" ΠΏΠΎ "логист"
  • πŸ“Œ Π‘ΠΈΠ½ΠΎΠ½ΠΈΠΌΡ‹: Ссли Π·Π°Π΄Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ "астра" = "Π·Π²Π΅Π·Π΄Π°", Ρ‚ΠΎ Π½Π°ΠΉΠ΄Ρ‘Ρ‚ ΠΈ ΠΏΠΎ этому слову
  • πŸ“Œ ΠžΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ: Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ "астря" β†’ "астра"

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅: стандартный поиск Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ LIKE '%тСкст%' Π² SQL (ΠΈΡ‰Π΅Ρ‚ подстроку), Π° полнотСкстовый β€” ΠΊΠ°ΠΊ спСциализированный поисковый Π΄Π²ΠΈΠΆΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ смысл запроса.

πŸ“Š Как часто Π²Ρ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ поиска Π² 1Π‘?
ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь
НСсколько Ρ€Π°Π· Π² нСдСлю
Рядом
Никогда

2. Когда полнотСкстовый поиск становится Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ

НСсмотря Π½Π° ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ прСимущСства, полнотСкстовый поиск Π½Π΅ всСгда ΠΎΠΏΡ€Π°Π²Π΄Π°Π½. Π•Π³ΠΎ настройка Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ рСсурсов, Π° Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ стандартными срСдствами. Π’ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ сцСнарии, Π³Π΄Π΅ Π±Π΅Π· Π½Π΅Π³ΠΎ Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ:

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° стандартного поиска Как ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ полнотСкстовый
Поиск ΠΏΠΎ большим справочникам (100 000+ записСй) Запрос выполняСтся ΠΌΠΈΠ½ΡƒΡ‚Π°ΠΌΠΈ, сСрвСр пСрСгруТаСтся Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°Ρ€Π°Π½Π΅Π΅, ΠΎΡ‚Π²Π΅Ρ‚ Π·Π° Π΄ΠΎΠ»ΠΈ сСкунды
Поиск ΠΏΠΎ частичному описанию (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ ящик" Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°) Найдёт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Ρ„Ρ€Π°Π·Π° Π² точности совпадаСт Найдёт ΠΏΠΎ Π»ΡŽΠ±ΠΎΠΌΡƒ слову ΠΈΠ· Ρ„Ρ€Π°Π·Ρ‹, Π΄Π°ΠΆΠ΅ с ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠ°ΠΌΠΈ
Π Π°Π±ΠΎΡ‚Π° с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ (Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°, Π°ΠΊΡ‚Ρ‹, письма) НСвозмоТно Π½Π°ΠΉΡ‚ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ тСкста Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΠ΅Ρ‚ содСрТимоС Ρ„Π°ΠΉΠ»ΠΎΠ² (PDF, DOCX) ΠΈ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Ρ‘Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²
Поиск ΠΏΠΎ синонимам (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "ΠΊΠ»ΠΈΠ΅Π½Ρ‚" = "Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊ") НС ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ смысловых связСй МоТно Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ синонимов

ОсобСнно ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½ полнотСкстовый поиск Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… конфигурациях:

  • πŸ“¦ 1Π‘:ERP β€” ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π½Ρ‹ΠΌΠΈ справочниками
  • πŸ“Š 1Π‘:Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ…ΠΎΠ»Π΄ΠΈΠ½Π³ΠΎΠΌ β€” поиск ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ
  • πŸ₯ 1Π‘:ΠœΠ΅Π΄ΠΈΡ†ΠΈΠ½Π° β€” поиск ΠΏΠΎ историям Π±ΠΎΠ»Π΅Π·Π½Π΅ΠΉ ΠΈ Π΄ΠΈΠ°Π³Π½ΠΎΠ·Π°ΠΌ
  • πŸ“š 1Π‘:Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΎΠ±ΠΎΡ€ΠΎΡ‚ β€” поиск ΠΏΠΎ содСрТимому Ρ„Π°ΠΉΠ»ΠΎΠ²
πŸ’‘

Если Π² вашСй Π±Π°Π·Π΅ ΠΌΠ΅Π½Π΅Π΅ 50 000 записСй Π² самых ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… справочниках, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ сначала ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ стандартный поиск с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ индСксов. ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹ΠΉ поиск ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ.

3. Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ полнотСкстовый поиск Π² 1Π‘: тСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ поиск, Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Π΅Π³ΠΎ устройствС. Π’ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 полнотСкстовый поиск Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° Π±Π°Π·Π΅:

  • πŸ”§ ВстроСнного ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° (для вСрсий Π΄ΠΎ 8.3.20) β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ FullTextIndex Π² PostgreSQL ΠΈΠ»ΠΈ MS SQL
  • πŸ”§ Π’Π½Π΅ΡˆΠ½Π΅Π³ΠΎ поискового сСрвСра (с 8.3.20+) β€” интСграция с Elasticsearch ΠΈΠ»ΠΈ Sphinx

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ систСмы:

  1. Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ‚ΠΎΡ€ β€” Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ тСкстовыС поля ΠΈ создаёт поисковый индСкс (Π°Π½Π°Π»ΠΎΠ³ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅).
  2. Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ β€” Ρ…Ρ€Π°Π½ΠΈΡ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ слов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Π±Π΅ΠΆΠ°Π»" β†’ "Π±Π΅ΠΆΠ°Ρ‚ΡŒ").
  3. ΠŸΠΎΠΈΡΠΊΠΎΠ²Ρ‹ΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ β€” ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ запросы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ поиска выглядит Ρ‚Π°ΠΊ:

  1. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ запрос, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Π½Π°ΠΉΡ‚ΠΈ всС счСта Π·Π° ΠΌΠ°ΠΉ".
  2. БистСма Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ запрос Π½Π° Ρ‚ΠΎΠΊΠ΅Π½Ρ‹: ["Π½Π°ΠΉΡ‚ΠΈ", "всС", "счСта", "Π·Π°", "ΠΌΠ°ΠΉ"].
  3. УдаляСт стоп-слова (ΠΏΡ€Π΅Π΄Π»ΠΎΠ³ΠΈ, ΡΠΎΡŽΠ·Ρ‹): остаётся ["счСта", "ΠΌΠ°ΠΉ"].
  4. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ слова Π² Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ: ["счёт", "ΠΌΠ°ΠΉ"].
  5. Π˜Ρ‰Π΅Ρ‚ Π² индСксС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, содСрТащиС эти Ρ‚ΠΎΠΊΠ΅Π½Ρ‹, ΠΈ Ρ€Π°Π½ΠΆΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… ΠΏΠΎ рСлСвантности.

Π’Π°ΠΆΠ½ΠΎ: индСкс Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π°Π·Π°Ρ… это ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя.

Как 1Π‘ Ρ…Ρ€Π°Π½ΠΈΡ‚ полнотСкстовый индСкс Π² PostgreSQL?

Π’ Π±Π°Π·Π΅ создаётся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° fti_* (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, fti_catalog_nomenklatura), Π³Π΄Π΅ хранятся Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΈ ссылки Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ записи. ΠŸΡ€ΠΈ поискС 1Π‘ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ SQL-запрос с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ts_query, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ индСкс Ρ‚ΠΈΠΏΠ° GIN ΠΈΠ»ΠΈ GiST.

4. Пошаговая настройка полнотСкстового поиска Π² 1Π‘ 8.3

Рассмотрим настройку Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1Π‘:ERP Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ прСдприятиСм 2.5 (Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 8.3.20+).

Π¨Π°Π³ 1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ полнотСкстового поиска

НС всС Π‘Π£Π‘Π” ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ полнотСкстовый поиск:

  • βœ… PostgreSQL β€” поддСрТиваСтся (начиная с вСрсии 9.6)
  • βœ… Microsoft SQL Server β€” поддСрТиваСтся (начиная с 2012)
  • ❌ IBM DB2 β€” Π½Π΅ поддСрТиваСтся
  • ❌ Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” Π½Π΅ поддСрТиваСтся

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ свою Π‘Π£Π‘Π”, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ запрос Π² консоли 1Π‘:

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(ВипЗначСния(ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅.Π‘Π°Π·Π°Π”Π°Π½Π½Ρ‹Ρ….Π‘Π΅Ρ€Π²Π΅Ρ€));

Π¨Π°Π³ 2. Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ полнотСкстового поиска для справочника

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€ ΠΈ:

  1. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ справочник, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½ΡƒΠΆΠ΅Π½ поиск (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "НомСнклатура").
  2. Π’ ΠΏΠ°Π»ΠΈΡ‚Ρ€Π΅ свойств Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ "ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹ΠΉ поиск" ΠΈ установитС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ".
  3. Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ поля, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΅ΡΡ‚ΠΈΡΡŒ поиск (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это "НаимСнованиС", "ПолноСНаимСнованиС", "Артикул").

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π‘Π£Π‘Π”|Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ полнотСкстовый поиск Π² свойствах справочника|Π£ΠΊΠ°Π·Π°Ρ‚ΡŒ индСксируСмыС поля|ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π±Π°Π·Ρ‹|Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ пСрСиндСксированиС-->

Π¨Π°Π³ 3. ΠŸΠ΅Ρ€Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…

ПослС настройки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ индСкс. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ:

  • πŸ”„ Π§Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€: АдминистрированиС β†’ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈ обслуТиваниС β†’ ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹ΠΉ поиск β†’ ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ индСксы
  • πŸ”„ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ:
    ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹ΠΉΠŸΠΎΠΈΡΠΊ.ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ˜Π½Π΄Π΅ΠΊΡΡ‹();

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π°Π·Π°Ρ… пСрСиндСксированиС ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ нСсколько часов. Π›ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ эту ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π² Π½Π΅Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ врСмя.

πŸ’‘

Если послС настройки поиск Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Π‘Π£Π‘Π”. Для PostgreSQL ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²Π° Π½Π° созданиС индСксов Ρ‚ΠΈΠΏΠ° GIN.

5. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ полнотСкстового поиска Π² 1Π‘

НСсмотря Π½Π° всС прСимущСства, Ρƒ полнотСкстового поиска Π΅ΡΡ‚ΡŒ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹Π΅ ограничСния, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π΅Π΄ΠΊΠΎ говорят:

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ вСрсиях 1Π‘ Π½ΠΈΠΆΠ΅ 8.3.20 полнотСкстовый поиск Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π΅ΠΉ. ЛатинскиС символы ΠΈ спСцзнаки (#, $, %) ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. Π­Ρ‚ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ для ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с ΠΈΠΌΠΏΠΎΡ€Ρ‚Π½ΠΎΠΉ Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€ΠΎΠΉ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

  • 🐒 ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π°Π· (100 000+ записСй) ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄ΠΎ 12 часов ΠΈ Π½Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ сСрвСр.
  • πŸ”„ Актуализация: ИндСкс Π½Π΅ обновляСтся Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ПослС измСнСния Π΄Π°Π½Π½Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ пСрСиндСксированиС.
  • πŸ“› ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΠΏΠΎ полям: НС всС Ρ‚ΠΈΠΏΡ‹ ΠΏΠΎΠ»Π΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, нСльзЯ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ поля с Ρ‚ΠΈΠΏΠΎΠΌ "Π₯ранилищСЗначСния").
  • πŸ”’ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ: Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… конфигурациях полнотСкстовый поиск ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π΅Ρ‚ ΠΏΡ€Π°Π² доступа (Π±Π°Π³ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹).

Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ нюанс: поиск ΠΏΠΎ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Ρ‘Π½Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ (PDF, DOCX) Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли:

  • πŸ“Ž Π€Π°ΠΉΠ»Ρ‹ хранятся Π² Π±Π°Π·Π΅ (Π½Π΅ ΠΊΠ°ΠΊ ссылки Π½Π° диск)
  • πŸ“Ž УстановлСн ΠΌΠΎΠ΄ΡƒΠ»ΡŒ 1Π‘:Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΎΠ±ΠΎΡ€ΠΎΡ‚ ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ
  • πŸ“Ž На сСрвСрС установлСны Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для извлСчСния тСкста (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Apache Tika)
ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠŸΡ€ΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ РСшСниС
Поиск Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ слова с дСфисом ("Π΄ΠΈΠ²Π°Π½-ΠΊΡ€ΠΎΠ²Π°Ρ‚ΡŒ") ДСфис воспринимаСтся ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ дСфис Π½Π° ΠΏΠΎΠ΄Ρ‡Ρ‘Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π² индСксС ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² запросС
НС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ поиск ΠΏΠΎ английским словам ВСрсия 1Π‘ Π½ΠΈΠΆΠ΅ 8.3.20 ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ внСшний поисковый сСрвСр
ΠœΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ поиск послС обновлСния индСкса ИндСкс Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ REINDEX Π² Π‘Π£Π‘Π” ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ индСкс

6. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ полнотСкстовому поиску Π² 1Π‘

Если настройка полнотСкстового поиска каТСтся слишком слоТной ΠΈΠ»ΠΈ рСсурсоёмкой, рассмотритС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ способы ускорСния поиска:

1. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ стандартного поиска

  • πŸ› οΈ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ индСксы Π½Π° часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ поля:
    Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура.Π˜Π½Π΄Π΅ΠΊΡΡ‹.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("ИндСксПоНаимСнованию", Новый ИндСксКолонки("НаимСнованиС"));
  • πŸ› οΈ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π±ΠΎΡ€Ρ‹ вмСсто ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°:
    Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.НомСнклатура.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ();
    

    Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.ΠžΡ‚Π±ΠΎΡ€.НаимСнованиС.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ("Π΄ΠΈΠ²Π°Π½%");

2. Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ поисковыС систСмы

Для ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… прСдприятий ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ станСт интСграция с:

  • πŸ” Elasticsearch β€” ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠΎΡ€Ρ„ΠΎΠ»ΠΎΠ³ΠΈΡŽ, синонимы, фасСтный поиск
  • πŸ” Sphinx β€” быстрый, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ€ΡƒΡ‡Π½ΠΎΠΉ настройки
  • πŸ” 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ + Bitrix24 β€” Ссли Π½ΡƒΠΆΠ½Π° связка с CRM

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Elasticsearch:


// ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Elasticsearch

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ = Новый HTTPΠ‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅("http://localhost:9200");

Запрос = Новый HTTPЗапрос("/Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π°/_search");

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ’Π΅Π»ΠΎΠ˜Π·Π‘Ρ‚Ρ€ΠΎΠΊΠΈ('{

"query": {

"match": {

"Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅": "Π΄ΠΈΠ²Π°Π½"

}

}

}');

ΠžΡ‚Π²Π΅Ρ‚ = ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΠ—Π°ΠΏΡ€ΠΎΡ(Запрос);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = ΠžΡ‚Π²Π΅Ρ‚.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ’Π΅Π»ΠΎΠšΠ°ΠΊΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ();

3. Π‘Π°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Если Π±ΡŽΠ΄ΠΆΠ΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½, ΠΌΠΎΠΆΠ½ΠΎ:

  • πŸ“ Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ справочник синонимов ΠΈ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ Π½Π΅ΠΌΡƒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ
  • πŸ“ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСгулярныС выраТСния для Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ поиска:
    Если Π Π΅Π³Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅("Π΄ΠΈΠ²Π°Π½|софа|ΠΊΡƒΡˆΠ΅Ρ‚ΠΊΠ°", НаимСнованиС).Найти() Π’ΠΎΠ³Π΄Π°
    

    // Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹

    ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

7. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ совСты ΠΏΠΎ использованию полнотСкстового поиска

Π§Ρ‚ΠΎΠ±Ρ‹ поиск Ρ€Π°Π±ΠΎΡ‚Π°Π» эффСктивно, слСдуйтС этим рСкомСндациям:

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если Π² вашСй Π±Π°Π·Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ нСстандартныС символы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΡ€Π³ΠΎΠ²ΡƒΡŽ ΠΌΠ°Ρ€ΠΊΡƒ "MΓΆbelβ˜…"), Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΈΡ… Π² список Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ полнотСкстового поиска. Π˜Π½Π°Ρ‡Π΅ Ρ‚Π°ΠΊΠΈΠ΅ записи Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹.
  • πŸ“Œ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ для поиска Ρ‚ΠΎΡ‡Π½ΠΎΠΉ Ρ„Ρ€Π°Π·Ρ‹:
    • ❌ Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ Π΄ΠΈΠ²Π°Π½ β€” Π½Π°ΠΉΠ΄Ρ‘Ρ‚ всС записи с ΠΎΠ±ΠΎΠΈΠΌΠΈ словами
    • βœ… "Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ Π΄ΠΈΠ²Π°Π½" β€” Π½Π°ΠΉΠ΄Ρ‘Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ совпадСниС Ρ„Ρ€Π°Π·Ρ‹
  • πŸ“Œ Π˜ΡΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ стоп-слова:
    • ❌ Π½Π°ΠΉΡ‚ΠΈ всС счСта Π·Π° ΠΌΠ°ΠΉ β†’ систСма ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ "Π·Π°"
    • βœ… счСта ΠΌΠ°ΠΉ β€” Π±ΠΎΠ»Π΅Π΅ эффСктивный запрос
  • πŸ“Œ НастраивайтС вСса ΠΏΠΎΠ»Π΅ΠΉ:
    • НапримСр, ΠΏΠΎΠ»Π΅ "НаимСнованиС" ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Π°ΠΆΠ½Π΅Π΅, Ρ‡Π΅ΠΌ "ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ".

Для ускорСния Ρ€Π°Π±ΠΎΡ‚Ρ‹:

  • πŸš€ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ поиска:
    Поиск.ΠžΠ±Π»Π°ΡΡ‚ΡŒΠŸΠΎΠΈΡΠΊΠ° = "Π’ΠΎΠ»ΡŒΠΊΠΎΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π°";
  • πŸš€ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для частых запросов
  • πŸš€ НастраивайтС расписаниС пСрСиндСксирования Π½Π° Π½ΠΎΡ‡Π½ΠΎΠ΅ врСмя
πŸ’‘

Если поиск стал Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ послС обновлСния 1Π‘, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Π½Π΅ ΡΠ±Ρ€ΠΎΡΠΈΠ»ΠΈΡΡŒ Π»ΠΈ настройки индСксов Π² Π‘Π£Π‘Π”. Иногда ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ сбрасываСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ запросов.

FAQ: ЧастыС вопросы ΠΎ полнотСкстовом поискС Π² 1Π‘

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ полнотСкстовый поиск Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ 1Π‘?

НСт, полнотСкстовый поиск Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрном Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π‘Π£Π‘Π” (PostgreSQL, MS SQL). Π’ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ стандартный поиск ΠΏΠΎ подстрокС.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ поиск Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ слова с ошибками (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Π΄ΠΈΠ²Π°Π½Π½")?

Π’ стандартной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ 1Π‘ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅Ρ‡Ρ‘Ρ‚ΠΊΠΈΠΉ поиск (fuzzy search). Для этого Π½ΡƒΠΆΠ½ΠΎ:

  1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ внСшний поисковый сСрвСр (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Elasticsearch).
  2. Π›ΠΈΠ±ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π° основС Π›Π΅Π²Π΅Π½ΡˆΡ‚Π΅ΠΉΠ½Π°:
    Ѐункция Π Π°ΡΡΡ‚ΠΎΡΠ½ΠΈΠ΅Π›Π΅Π²Π΅Π½ΡˆΡ‚Π΅ΠΉΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°1, Π‘Ρ‚Ρ€ΠΎΠΊΠ°2)
    

    // РСализация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

    ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ;

Как ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ поиск Π² большой Π±Π°Π·Π΅ (100 000+ записСй)?

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ:

  • πŸ”Ή Π Π°Π·Π±ΠΈΡ‚ΡŒ справочники Π½Π° нСсколько Ρ‚Π°Π±Π»ΠΈΡ† (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ).
  • πŸ”Ή Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹Π΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ для старых Π΄Π°Π½Π½Ρ‹Ρ….
  • πŸ”Ή ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ поискового индСкса Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр.
  • πŸ”Ή ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ индСксированиС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ полями (Π½Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ слуТСбныС Π΄Π°Π½Π½Ρ‹Π΅).
МоТно Π»ΠΈ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ содСрТимому ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Ρ‘Π½Π½Ρ‹Ρ… PDF-Ρ„Π°ΠΉΠ»ΠΎΠ²?

Π”Π°, Π½ΠΎ для этого Π½ΡƒΠΆΠ½ΠΎ:

  1. Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² Π±Π°Π·Π΅ (Π½Π΅ ΠΊΠ°ΠΊ внСшниС ссылки).
  2. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° сСрвСрС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для извлСчСния тСкста (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Apache Tika).
  3. Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ "Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС Ρ„Π°ΠΉΠ»ΠΎΠ²".

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅: ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ тСкстовыС PDF. ΠžΡ‚ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ (изобраТСния) Π½Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

Как пСрСнСсти индСкс полнотСкстового поиска Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСрвСр?

ИндСкс полнотСкстового поиска хранится Π² Π‘Π£Π‘Π” ΠΈ пСрСносится вмСстС с Π±Π°Π·ΠΎΠΉ. Если Π½ΡƒΠΆΠ½ΠΎ пСрСнСсти Ρ‚ΠΎΠ»ΡŒΠΊΠΎ индСкс:

  1. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Π΄Π°ΠΌΠΏ Ρ‚Π°Π±Π»ΠΈΡ† индСкса (Π² PostgreSQL это Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ fti_*).
  2. ВосстановитС Π΄Π°ΠΌΠΏ Π½Π° Π½ΠΎΠ²ΠΎΠΌ сСрвСрС.
  3. ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ настройки ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² 1Π‘:
    ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ΠŸΠΎΠΈΡΠΊΠ°.Π‘Π΅Ρ€Π²Π΅Ρ€ = "Π½ΠΎΠ²Ρ‹ΠΉ_сСрвСр";

Π’Π°ΠΆΠ½ΠΎ: вСрсии Π‘Π£Π‘Π” Π½Π° старом ΠΈ Π½ΠΎΠ²ΠΎΠΌ сСрвСрС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ.