Як отримати синоніми таксономії, які надійно працюють з API пошуку?


20

Синоніми тегів є популярною, важливою особливістю на багатьох сайтах (наприклад, тут використовується StackExchange), а синоніми таксономії, які раніше були частиною основного модуля таксономії Drupal 6, перш ніж відмовитись на користь створеної спеціальної системи синонімів "Скачати власні" за допомогою API API .

Коли синоніми надійно працюють, вони надзвичайно корисні у пошуку; наприклад, щоб переконатися, що пошуки "Америки" знаходять вміст з тегом "США" тощо. Однак я не можу знайти жодних підстав щодо того, що є стандартним методом реалізації цієї функції під час роботи з популярним API пошуку - Facet API сімейство пов'язаних інтегрованих модулів пошуку для пошуку в вузлі.

"Робота з потоком" важлива при роботі з кластерами таких модулів, щоб переконатися, що системи, які ви впроваджуєте, не суперечать зерна мислення спільноти та модулів, що підтримують модулі. Коли вони дійсно йдуть проти зерна, вони лускаються і ризикують зламатись в майбутньому змінами цих модулів.

Що таке надійний / надійний / стандартний / очікуваний метод реалізації синонімів таксономії в D7 для сайтів, що використовують API пошуку? (зокрема, із Search API Solr , але я би сподівався, що спроби API пошуку, щоб вилучити конкретного пошукового постачальника, спрацюють у цьому випадку)

Якщо у вас є система для цього, яка, здається, працює, але це щось, що ви зрозуміли, і ви не впевнені, чи це проти, чи не проти зерна (досить поширене в Drupal), будь ласка, поділіться ним у будь-якому випадку інформацією з вашої тестування, використання та досвід роботи із функціями та модулями в сімействі API API API-Facet, з якими він працює і не працює добре.

Деякі правдоподібні, але потенційно пластові варіанти, які я знайшов у дослідженнях:

  • Існує модуль пошуку синонімів D7 , але він, мабуть, мало використовується, і немає підтвердження, що він працює або буде продовжувати працювати з сторонніми модулями пошуку, такими як API пошуку (розроблений з урахуванням пошуку ядра Drupal). Правка: також не виглядає загалом надійною у D7 .
  • Теоретично можна додати термінове поле під назвою "Синоніми" до словника таксономії та індексувати це поле від терміна в пошуковому API з однаковою вагою до терміна на самому вузлі. Це підходить для пошуку тексту, але відчуває себе як дрібне рішення MacGuyver-y для каналів, а не щось надійне, що плавно вписується у всю сімейство API пошуку. Наприклад, якщо термін "Великобританія" має синонім "Британія", хтось, який шукає "Британія", отримає результати, позначені "Об'єднані Кіндгом", а хтось набрав "Британія" в автозаповнюваний таксономічний фільтр, чи вибрав Британію з фактом таксономії не побачив би вміст, позначений темою "Великобританія". *****
  • Інша аналогічна можливість - додавання багатозначного простого текстового поля "Синоніми" до терміна лексики (або, мабуть, навіть розділених комами), та індексація його такою ж вагою, як назва терміна, як вище. Але це має подібні, якщо не гірші, проблеми із вищезгаданим у наведеному вище прикладі, "Британія" навіть не буде вказана як опція у фасеті чи відкритому фільтрі. Можливо, є якийсь спосіб створити складене поле, комбінуючи ім’я та синоніми ("Великобританія (Великобританія, Великобританія)"), і встановити фасети / відкриті фільтри / тощо, щоб використовувати це ... але я не можу думати про будь-який спосіб зробити це, що не викликає занепокоєння, і не відчуває побоювання проти зерна. Редагувати: пошук API-інтерфейсу, здається, розроблений для чогось подібного, але я
  • Тоді є останнім варіантом просто вписати все в назву терміна: повинно бути зрозуміло, що це не бажано і в багатьох випадках буде складати дуже потворні списки (наприклад, уявіть навігаційний список країн, які були виписані на зразок "Північ" Корея (ПРК, КНДР, Демократична Народна Республіка Корея) "...). Або мати поле "Відображати ім'я", яке показує коротку версію, і налаштувати все, крім пошуку (усі представлення даних, Pathauto, кожен інший модуль contrib / core, який використовує назву терміна), щоб використовувати це замість назви терміна ... знову, дуже хакі і дуже проти зерна.
  • Apache Solr має функцію синонімів, де читається текстовий файл синонімів, і ці терміни розглядаються як синонімічні для пошукових запитів, які його використовують. Однак, хоча це можливо в налаштуваннях API пошуку, що використовує Solr, це вважає, що підтримуючі модулі підтримують розширену конфігурацію Solr "спроба на власний ризик" . Крім того, це більше підходить для загальної синонімії на мові сайту, ніж синонімії конкретно в контексті систематики. Наприклад, сайт з систематикою, який не дискримінує Англію, Шотландію тощо від Британії, може захотіти вважати їх синонімами в контексті тегів, але не синонімічним у контексті пошуку тексту тексту. Редагувати: Головний сервіс API Facet попереджає про цей маршрут оскільки модулі інтеграції Solr працюють з термінами, оскільки TID не є текстовими.

Я знаю, що це хибний приклад, тому що у випадку Великобританії / Британії та країн загалом люди звикли використовувати списки, у яких є лише той чи інший. Є маса менш простих випадків (наприклад, категорії товарів), коли люди не думають шукати синонім.

Оновлення: відповідна інформація у новій темі черги API Drupal.org Facet . Також потік (наразі без відповіді) у черзі API API пошуку .

(будь-які правила юристів цікавлять, чи добре, щоб там були запити на підтримку drupal.org та друпал відповідав на запитання на ту саму тему: так, насправді рекомендується зняти тиск, що підтримує модуль )


1
ти знайшов рішення для цього? У мене зараз ця точна проблема.
vishal

Відповіді:


2

Я використовую відмінний модуль синонімів bojanz . Це повне перезапис функції синонімів D6 з низкою нових дзвіночків. Схоже, це може зробити більшість того, що вам потрібно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.