2010-06-13 19 views
2

Je développe un prototype très basique du moteur de recherche web et maintenant je veux savoir quelle est la meilleure façon d'analyser l'utilisateur requête brute et de détecter ce qui veut chercher. comme Google, Bing, Yahoo etc ...quelle est la meilleure façon d'analyser la requête brute d'utilisateur et détecter ce qui veulent rechercher

une requête brute d'utilisateur exemple est quelque chose comme ceci:

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

et je veux partager ce à une liste générique de chaque terme (simple) comme celui-ci:

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"> 

je ne veux pas le code complet, je veux des conseils, solution, conseils ou quoi que ce soit qui me aider à écrire mieux pour analyser l'utilisateur requête brute.

merci à l'avance

+0

Votre exemple est erroné. – SLaks

+0

hm ..., pouvez-vous me donner une réponse correcte? – Sadegh

+0

L'analyse correcte de votre exemple est: ((Google ET CARTES ET « L'Afrique Soutch » ET LE BRÉSIL ET Pays-Bas) ET (Italie ou en Espagne)) NON (Argentine) Le ET avant la ou partie, pourrait être lu comme possbily, et pas un ET littéral pour l'analyse de Google. –

Répondre

1

ne pense pas en termes de la chaîne de requête. Pensez d'abord aux opérations de recherche logiques que vous souhaitez autoriser et à la façon dont votre moteur les satisfera.

Comment chaque ensemble d'opérations logiques peut être traduit d'une ou plusieurs chaînes de requête devient alors un détail de mise en œuvre.

+0

il est traduit comme des moteurs de recherche populaires.Tous les termes de gauche (ou en fonction de la langue peut être du côté droit) démarre et filtre les résultats de recherche pour chaque terme (par type de terminaison qui a été détecté pour chaque terme). – Sadegh