Я использую JSOUP (http://jsoup.org/) для анализа HTML-страницы и извлечения данных с этой страницы. В этом я извлекаю детали рецептов, такие как время приготовления, инструкции & ингредиенты. Возьмите все эти данные со страницы HTML и сохраните их в архивной таблице с именем recipeImport.
Прежде чем вставить их в действительную таблицу рецептов. Я должен разобрать ингредиенты, потому что он был сохранен в таблице recipe_ingredient на основе трех разных основных таблиц, а именно recipeAmount, recipeUnitType & recipeIngredient.
Позвольте мне рассмотреть простой ингредиент, такой как «1 чашка белого сахара». Я разделяю количество (1), unitType (чашка) и ингредиент (сахар), чтобы они соответствовали этим (recipeAmount, recipeUnitType & recipeIngredient) мастер-таблицы и вставьте ингредиент в таблицу recipe_ingredient с идентификатором ссылки.
таблица recipeAmount
ID amountType amountTypeValue
1 1/2 0.5
2 1 1
Таблица recipeUnitType
ID UnitType
1 cup
2 tbs
3 tsp
4 gram
recipeIngredient table
ID ingredientName
1 sugar
2 salt
3 Honey
Наконец, я должен сохранить ингредиент, как это.
таблица рецептов
ID amountID unitTypeID ingredientID line_text ingredient_line
1 2 1 1 white Sugar 1 cup white sugar
До сих пор я использовал это регулярное выражение, чтобы проверить действительный ингредиент.
regex1 = "^((\d+)|(\d+\/\d+)|(\d+)\s(\d+\/\d+)|(\d+-\d+))\s((dash|pinch|tsp|tbs|fl oz|cup|pt|qt|gal|oz|lb|cl|can)|(dash|pinch|teaspoon|tablespoon|fluid ounce|cup|pint|quart|gallon|ounce|pound|fresh|clove|small|medium|large|slice|hand|of|turnip))(s)?\b\s[A-Za-z0-9(,|\-|&|:|!|" & "'|" & '"' & ")\s]+[A-Za-z(,|\-|&|:|!|" & "'|" & '"' & ")\s]+$";
regex2 = "^((\d+)|(\d+.\d+))\s((kg|g|lb|cl)|(kilo gram|gram|pound))(s)?\b\s[A-Za-z0-9(,|\-|&|:|!|" & "'|" & '"' & ")\s]+[A-Za-z(,|\-|&|:|!|" & "'|" & '"' & ")\s]+$";
regex3 = "^((a|an|extra))\s[A-Za-z0-9(,|\-|&|:|!|" & "'|" & '"' & ")\s]+[A-Za-z(,|\-|&|:|!|" & "'|" & '"' & ")\s]+$";
Задача ещё не решена.
Других решений пока нет …