2016-03-08 2 views
1

Я сделал некоторый анализ на Apache Solr и его довольно хорошо, чтобы искать данные из разных источников. Проблема, с которой я столкнулась, - это как стандартизировать мою грамматику поиска и перевести текст поиска в запрос Solr.Semi Natural language Поиск с использованием Apache Solr

У меня есть три типа файлов/таблицы базы данных для поиска, а именно: клиент, промышленность и подразделение. Первое ключевое слово в поле поиска должно быть любым из трех. После этого, пользователь может определить починки набор критериев:

Metrics : 0 or many (ex, exposure, income, revenue, loan_amt etc) 
Dimension : 0 or many (Geography, region, etc) 

Пример:

customer - Returns all customer data from customer core 
customer income from Asia - Returns all customer income details who belongs to Asia 
customer income revenue from Asia - Returns all customer income and revenue details who belongs to Asia 

Как я могу перевести выше естественного языка поиска текста в Solr запроса? Могу ли я исправить грамматику текста в Solr, как Первое ключевое слово должно быть клиентом/промышленностью/единицей, Второй ключ-значение будет одним или несколькими регионами/географией , а затем метрическими значениями.

Я не ищу Google, как поиск, но ограниченный поиск, где пользователь знает, что искать.

ответ

1

Это, похоже, не вопрос Solr, строго говоря. В качестве первого шага вам может понадобиться определить context-free grammar (CFG, грамматика типа 2) на основе определенных правил производства для вашего ввода. Это даст вам некоторые твердые правила синтаксиса для работы. Исходя из этого, вы можете создать парсер для ввода естественного языка и отобразить полученное дерево разбора в поиск по ключевым словам в Solr.

+0

Спасибо martin. можете ли вы предложить хороший Java API/пример, который может помочь определить контекстную свободную грамматику. – user3222372

+0

Возможно, это поможет: http://www.cs.columbia.edu/~zeph/software/JavaCFG/instructions.html –

1

Для того, чтобы не втянуть себя в вопрос, отвечающий за домен НЛП, который считается самым сложным доменом НЛП, может попытаться определить синтаксис ваших вопросов, например X в Y с Z, где X может быть разными объектами например, Customer, Y может быть некоторой геолокацией и Z-фильтром.