Разбор произвольного текста (естественный язык) с помощью solr
Я пытаюсь построить алгоритм синтаксического анализа запроса для локального поискового сайта, который может классифицировать запрос произвольного текстового поиска (одно текстовое поле ввода) на различные типы возможных поисков, возможных на сайте.
Например, пользователь может ввести китайские рестораны рядом с XYZ. Как мне разобраться с кухней:"китайский", местность:"xyz", учитывая, что
- there could be spelling mistakes
- keywords may match in different columns e.g. a restaurant may have "chinese" in its name
Это на самом деле не проблема синтаксического анализа естественного языка, так как мы пытаемся искать в очень ограниченном наборе возможностей
Мои первоначальные мысли - сбросить все значения определенного типа в поле из базы данных и использовать запрос пользователей для сопоставления во всех этих полях. Затем на основе оценки (и предварительно определенного уровня достоверности) разделите запрос на 3-4 поля поиска, такие как имя / кухня / местность.
Есть ли лучший / стандартный способ сделать это.
1 ответ
Что касается орфографических ошибок, вам придется работать со словарем / тезаурусом. Это может быть частью вашей предварительной обработки и нормализации.
О запросах в нескольких столбцах вы можете сделать; кухня: китайская ИЛИ restaurant_name: китайская
Вы можете повысить одно из двух: кухня: китайская ^0,8 ИЛИ restaurant_name: китайская