2015-01-28 3 views
0

Я работаю для приложения, которое позволяет сканировать штрих-код для загрузки ингредиентов в базу данных. Проблема, с которой мы сталкиваемся, заключается в том, что существует множество псевдонимов для одного и того же ингредиента. Например, растение может иметь все эти различные псевдоним «:Сканирование штрихового кода с помощью псевдонима сортировки

JOJOBA OIL 
JOJOBA OIL (BUXUS CHINENSIS) 
JOJOBA OIL (HYDROGENATED) 
JOJOBA OILS 
JOJOBA OIL (SIMMONDSIA CHINENSIS) 
JOJOBA OIL (SIMONDSIA CHINENSIS) 
JOJOBA SEED EXTRACT 
(JOJOBA) SEED OIL 
JOJOBA SEED OIL 
JOJOBA SEED OIL] 
JOJOBASEED OIL 
JOJOBA SEED OILJOJOBA 
JOJOBA SEED OIL (JOJOBA) 
JOJOBA SEED OIL (SIMMONDSIA CHINENSIS) 
JOJOBA SEED POWDER 
JOJOBA (SIMMONDSIA CHINENSIS) EXTRACT (REPLENISHING COMPLEX) 
JOJOBA (SIMMONDSIA CHINENSIS)OIL 
JOJOBA (SIMMONDSIA CHINENSIS) OIL 
JOJOBA (SIMMONDSIA CHINENSIS) OIL (SAPONIFIED) 
JOJOBA (SIMMONDSIA CHINENSIS) SEED OIL 
JOJOBA WAX (BUXUS CHINENSIS) 
JOJOBO SEED OIL 

Все эти псевдоним» будет связан с тем же ингредиентом, но большую часть времени, мы должны добавить ее вручную. С растениями нет стандартизованного способа назвать их, поэтому он часто встречается со многими разными псевдонимами ». Если бы мы могли использовать часть имени для автоматической ссылки на ингредиент, это было бы здорово. Благодарим вас за это.

ответ

0

Трудно рекомендовать что-то, не зная, на какие технологии вы нацеливаетесь, или какие данные у вас уже есть. Из ваших данных образца, похоже, ваши возможные совпадения имеют один и тот же префикс (если вы нормализуете данные для удаления скобок).

Если вы работаете с кодом приложения, вы можете построить детерминированный ациклический автомат с конечным состоянием (иногда также называемый DAWG). Wikipedia Это позволит вам быстро выполнять префикс (или инфикс с небольшим изменением настроек). Вы можете комбинировать строковый показатель (например, расстояние Левенштейна), чтобы допускать опечатки или небольшие различия между именами ингредиентов. У Стива Ханова есть отличная серия сообщений в блогах по попыткам и DAWG. Вот сообщение о DAWG (http://stevehanov.ca/blog/index.php?id=115).

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

Если вы ищете подход к базе данных, большинство СУБД имеют функцию CONTAINS, которая работает с полнотекстовым индексом.

Возможно, если вы предоставите немного больше информации, мы могли бы предоставить более конкретный ответ.

0

Без сомнения, у вас есть таблица с именами отдельных ингредиентов в качестве ключа. Просто добавьте в эту таблицу столбец «перекрестная ссылка компонента».

Всякий раз, когда вы добавляете новый компонент, просто установите «ингредиент перекрестных ссылок» к новому положительному числу и отчета капельных, так что вы можете получить (запись #: Ингредиент: перекрестные ссылки)

127 JOJOBA OIL  21 
311 JOJOBA OILS  57 

например. Решите, что ваш «стандарт» будет имя, и изменить кросс-номер ссылки (- номер эталона)

127 JOJOBA OIL  21 
311 JOJOBA OILS  -21 

Затем, когда вы обнаружите «жожоба», так как перекрестные ссылки является отрицательным, вы можете найти стандартное имя с помощью очевидных средств.

Это может быть расширено. Например, возможно, что у вас может быть один и тот же ингредиент, называемый по-разному на разных рынках - национальном или даже региональном.Так, например, в Австралии, «Capsicum» является то, что в США является «Bell Pepper»

Вы просто вводите в основной таблице

551 Capsicum   32 
306 Bell Pepper  -32 

И во вспомогательной таблице области: использование: ссылка

US    32  306 
Aus    32  551 

если есть запись в таблице предпочтений, то для ингредиента с абс (перекрестными ссылками) 32 затем использовать запись 306 для рынка США или 551 для австралийского рынка. Если нет записи, то на двух рынках используется тот же термин.

(но, похоже, больше о дизайне базы данных, чем сканирование штрих-кода ...)