Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Highlight algoritm

Postades av 2006-10-03 12:38:28 - Jimmy Mattsson, i forum c# (c-sharp), Tråden har 4 Kommentarer och lästs av 656 personer

Försöker klura ut en vettig algoritm för att markera och ta ut de 3-4 första meningarna runt mina sökord (likt google). Är det någon som gjort/sett detta förut?

Den koden jag har nu gör inte specielt mycket, den markerar bara sökorden...

<code>
foreach(string str in Query.Split(' '))
{
q += str +"|";
}
q = q.Substring(0,q.Length-1);

TextToHighLight = Regex.Replace(TextToHighLight, q, "<b>$&</b>", RegexOptions.IgnoreCase);

</code>


Svara

Sv: Highlight algoritm

Postades av 2006-10-03 15:03:38 - Peter Larsson

Hej
Du menar 3-4 ord runt ditt sökord?

Knådade ihop ett reguljärt uttryck som fixar det (endast en grund).
Observera att du får modifiera den, det tar bara ord separerade med mellanslag.

Ändra 2 och 3 till de antal "ord" du vill ha till vänster resp. höger om sökordet "test".
<code>
.*?(^| )(([^ ]+?[ ]){0,2}test([ ][^ ]+?){0,3})($| ).*
</code>

Grupp 2 innehåller resultatsträngen.
Sedan kan du fet-markera sökordet med ytterligare ett reguljärt yttryck liknande det du redan använt dig av.

/ Peter


Svara

Sv: Highlight algoritm

Postades av 2006-10-03 16:57:15 - Jimmy Mattsson

Lite mer kod:

Men det är segt...och kan man på nått sätt göra så man känner av mellanslad, punkt, komma osv, så man inte bryter mitt i ord.

<code>
private string HighLight(string TextToHighLight, string Query)
{
string q = "";
string result;
string KeyWord = "[KEYWORD]";
int Index;

foreach(string str in Query.Split(' '))
{
q += str +"|";
}
q = q.Substring(0,q.Length-1);

TextToHighLight = Regex.Replace(TextToHighLight, q, KeyWord+"<b>$&</b>", RegexOptions.IgnoreCase);

Index = TextToHighLight.IndexOf(KeyWord, 0, TextToHighLight.Length);

result = HighlightSelect(0,TextToHighLight,Query);

return result;
}

private string HighlightSelect(int Start, string Text, string Query)
{
string KeyWord= "[KEYWORD]";
string SubString;
StringBuilder ReturnString = new StringBuilder();
int Index;

while(ReturnString.Length < 300)
{
Index = Text.IndexOf(KeyWord, Start, Text.Length - Start);

if(Index > 0)
{
SubString = Text.Substring(System.Math.Max(Index-45, 0), System.Math.Min(Text.Length - Index, 90));

if(ReturnString.Length == 0)
ReturnString.Append(Index+" "+SubString.Replace(KeyWord,""));
else
ReturnString.Append("..."+ Index+" "+SubString.Replace(KeyWord,""));

Start = Index + 1;
}
else
break;
}

return ReturnString.ToString();
}
</code>


Svara

Sv:Highlight algoritm

Postades av 2006-10-03 16:57:38 - Jimmy Mattsson

Ok ska testa den, verkar enklare än min lösning.


Svara

Sv:Highlight algoritm

Postades av 2006-10-04 13:24:30 - Jimmy Mattsson

Jag lyckas få med all text med det regex utrycket.

koden
<code>
private string HighLight(string TextToHighLight, string Query)
{
string q = "";
string pattern = "";
string result = "";

foreach(string str in Query.Split(' '))
{
if(pattern.Length == 0)
pattern += ".*?(^| )(([^ ]+?[ ]){0,2}"+ str +"([ ][^ ]+?){0,3})($| ).*";
else
pattern += "|.*?(^| )(([^ ]+?[ ]){0,2}"+ str +"([ ][^ ]+?){0,3})($| ).*";
}


Regex reg = new Regex(pattern);
MatchCollection matches = reg.Matches(TextToHighLight);


foreach(Match m in matches)
{
if(result.Length == 0)
result = m.Value;
else
result += "..."+ m.Value;

if (result.Length > 200)
break;
}

foreach(string str in Query.Split(' '))
{
q += str +"|";
}
q = q.Substring(0,q.Length-1);

result = Regex.Replace(result, q, "<b>$&</b>", RegexOptions.IgnoreCase);

return result;
}
</code>


m.Value blir hela stycket text som skickas med TextToHighLight.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 170
27 953
271 705
539
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies