2010-10-21 3 views
1

J'ai fait un moteur de recherche et je compare une chaîne de recherche à une liste de mots. Cependant, je veux omettre des mots comme "How,do,i". Donc, si l'utilisateur recherche "How do I find my IP?". Si j'ai 3 autres articles commençant par How do I il ne serait pas vraiment capable de retourner une bonne pertinence.Comment puis-je comparer des mots en utilisant une expression rationnelle mais ignorer certains mots?

dès maintenant sa configuration (a-z0-9)+userinput+(a-z0-9) Vous vouliez avoir une liste de mots à omettre afin qu'ils ne correspondent pas. J'utilise javascript seulement s'il vous plaît aider.

+0

Prénumériser la variable et de supprimer tous les mots indésirables? – some

+3

avez-vous un exemple de code pour nous montrer? – drudge

Répondre

0

Un autre exemple mis à jour, en utilisant maintenant \ b

<html> 
    <head> 
    <script type="text/javascript"> 
     var unwanted = new RegExp(
      "\\b("+ [ 
       "(how|where|what) do (I|you)", 
       "some", 
       "other", 
       "words", 
       "or phrases", 
       "that", 
       "is", 
       "unwanted" 
      ].join("|")+ ")(?=\\b)", 
     "ig" // Ignore case, global 
     ); 

     function dosearch(e){ 
      var search = e.search.value; 
      search = search.replace(unwanted,""); 

      alert(search); 
      return false; 
     } 
     </script> 
</head> 
<body> 
    <form method="post" action="" onsubmit="return dosearch(this)"> 
     search: <input type="text" name="search"> 
    </form> 
</body> 
</html> 
+0

cela fonctionne très bien, mais pour une raison quelconque, il ne correspond pas au premier word.EX: "que dois-je faire si je ne peux pas afficher une page web" "Quoi" n'est pas ignoré même s'il n'est pas dans la liste des mots indésirables. Il semble sauter le premier mot de la phrase. Une idée pourquoi? –

+0

@Roy Rideaux: Quoi? Dans l'exemple ci-dessus "quoi" ne figure pas dans la liste des mots indésirables et ne doit pas être supprimé. Aucun des mots dans "que dois-je faire si je ne peux pas voir une page web" correspond, car il cherche les expressions "comment puis-je" ou "où puis-je". Etes-vous sûr d'ajouter un espace avant et après à la chaîne de recherche comme je le fais ci-dessus? C'est nécessaire pour que l'expression rationnelle fonctionne, sinon cela devient compliqué. – some

+0

Je l'ai essayé dans FF3.6, Opera 10, Chrome 6 et MSIE 8 et je ne peux pas reproduire votre problème. Cela fonctionne comme il se doit. – some

Questions connexes