Как индексировать имена исполнителей / групп, используя lucene / solr с моего сервера MySQL - PullRequest
1 голос
/ 08 февраля 2012

Мне интересно индексировать полные имена артистов / групп с помощью Lucene / Solr с моего сервера MySQL.

У меня есть таблица DB под названием «entity_aliases», в которой хранится множество вариаций групп / исполнителей в моей системе. таблица выглядит так:

entity_aliases int(11) auto inc. PK
entity_type enum(artist, band)
entity_id int(11)
entity_alias varchar(100) + full text search index.

Пример значения entity_alias (поля):

Beyoncé
Beyoncé Giselle Knowles
Giselle Knowles
...

Общее объяснение типа запросов, которые я хотел бы выполнить:

Мой сервис должен предоставлять информацию об артистах / группах. Для этого мои клиенты должны предоставить мне имя организации.

* Мои клиенты (иногда) предоставляют мне имя сущности с опечатками или имя, которое точно не найдено в БД (в нашем случае «Бейонс Ноулз» также отмечает европейское «é»).

Итак, требования:

  1. Я использую осколенный MySQL - поэтому 'entity_aliases' также осколок. нужно индексировать более 1 сервера MySQL.
  2. Необходимо поддерживать имена 80M.
  3. Приятно иметь: игнорировать / преодолевать мелкие опечатки или европейские символы (нечеткий поиск).
  4. Требуется поддержка PHP (CakePHP).
  5. имена сущностей, вероятно, не будут превышать 20-25 символов
  6. Сам запрос очень прост - я предоставляю «имя», а взамен я хотел бы получить список похожих объектов (entity_id и entity_type) и, если возможно, - оценку.
  7. Мне нужно индексировать сущности на лету, и на индекс следует воздействовать немедленно.

Вещи, которые я хотел бы знать:

  1. выполнимо с помощью lucene / solr?
  2. есть ли лучшее решение, которое мне нужно рассмотреть?
  3. как должна выглядеть моя схема?

Спасибо!

1 Ответ

1 голос
/ 08 февраля 2012

Звучит выполнимо с Solr.

Не вдаваясь в детали, вы можете преобразовать символы с акцентом в аналог ascii, используя ASCIIFoldingFilterFactory

http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.ASCIIFoldingFilterFactory

Для поиска по словам, которые звучат похоже, но с ошибками, вы можете использовать PhoneticFilter http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.PhoneticFilterFactory

Вам нужно поэкспериментировать с различными фильтрами, чтобы увидеть, что работает лучше для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...