2010-06-13 2 views
2

Я разрабатываю очень простой прототип веб-поисковой системы, и теперь я хочу знать, что является лучшим способом анализа пользовательского запроса и определения того, что которые хотят искать. как Google, Bing, Yahoo и т.д. ...Каков наилучший способ проанализировать пользовательский запрос и определить, кто хочет поискать

пример пользовательского сырым запроса что-то вроде этого:

Google+Maps+"South+Africa"+Brazil+OR+Italy+OR+Spain+-Argentina+Netherlands 

и я хочу разделить это общий список каждого термина (один), как это:

IEnumerable<KeyValuePair<TermType, string>> 
<TermType.All, "Google"> 
<TermType.All, "Maps"> 
<TermType.Exact, "South"> 
<TermType.Exact, "Africa"> 
<TermType.Any, "Brazil"> 
<TermType.Any, "Italy"> 
<TermType.Any, "Spain"> 
<TermType.None, "Argentina"> 
<TermType.None, "Netherland"> 

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

заранее спасибо

+0

Ваш пример неправильный. – SLaks

+0

hm ..., можете ли вы дать мне правильный вариант? – Sadegh

+0

Правильный синтаксический анализ вашего примера: ((Google И КАРТЫ И «Soutch Africa» И БРАЗИЛИЯ И Нидерланды) И (Италия ИЛИ Испания)) НЕ (Аргентина). И до части ИЛИ можно было читать как ПОСЛЫ, а не буквальное И для разбора Google. –

ответ

1

Не думаю, что с точки зрения строки запроса. Сначала подумайте о логических операциях поиска, которые вы хотите разрешить, и о том, как ваш движок удовлетворит их.

Как каждый набор логических операций может быть переведен из одной или нескольких строк запроса, затем становится деталью реализации.

+0

это переводится как популярные поисковые системы. Каждый из терминов слева (или на основе языка может быть с правой стороны) запускает и фильтрует результаты поиска для каждого термина (по TermType, который обнаружен для каждого). – Sadegh