2017-02-01 4 views
-2

Ich benutze Elasticsearch mit NEST C# und ich frage mich, ob es möglich ist, einen Teil des Textes zu bekommen, wo das gesuchte Wort oder Ausdruck erscheint.NEST C# Get Teil des Textes wo Wort/Satz erscheint

Zum Beispiel: Wenn wir diesen Text in einem Feld eines Dokuments:

„William Shakespeare war ein englischer Dichter, Dramatiker und Schauspieler wurde er in Stratford-upon-Avon am 26. April 1564 geboren.. Sein Vater war ein erfolgreicher Geschäftsmann und seine Mutter war die Tochter eines Großgrundbesitzers, Shakespeare gilt als der größte Schriftsteller der englischen Sprache und der herausragende Dramatiker der Welt und wird oft Englands Nationaldichter mit dem Spitznamen "Bard of Avon" genannt Er schrieb über 38 Stücke, 154 Sonette, zwei lange erzählende Gedichte und einige andere Verse, von denen die Urheberschaft einiger unsicher ist, seine Stücke wurden in jede größere lebende Sprache übersetzt und öfter aufgeführt als alle anderen Dramatiker."

Und ich suche "Bard von Avon". Gibt es eine Möglichkeit, den Teil des vollständigen Textes mit meinem Wort oder Ausdruck und den umgebenden Wörtern zu erhalten? Etwas wie: "... England Nationaldichter genannt und den Spitznamen des Barden von Avon Er schrieb über 38 Theaterstücke, 154 Sonette ..."

Als ich suche:

var result = client.Search<Books>(b => b 
     .Size(100) 
     .Query(
      query => query.Match(
       s => s. 
        Field(p => p.ContainedText).Query("Bard of Avon")))); 

Jetzt, Ich speichere zum Beispiel das erste Dokument und ich kann auf alle Felder zugreifen, die dieses Dokument hat.

var doc = res.Documents.First(); 

Ich habe jetzt den Doc.ContainedText, die alle Text (Shakespeare-Absatz) haben. Aber ich sehe keine Option, um nur einen Teil oder Teile von ihnen zu bekommen, wo das Wort erscheint. Ist es möglich?

Vielen Dank !!

+2

Stack-Überlauf kein Schreiben von Code-Dienst ist, zeigen Sie uns bitte Code, den Sie bereits versucht haben, dieses Problem zu lösen, und lassen Sie uns wissen, warum es nicht funktioniert. – Ben

+0

@ César Werfen Sie einen Blick auf Hervorhebung: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-highlighting.html –

+0

@RussCam Ich habe dies gelesen, aber das ist nicht was ich will . Ich möchte nur das selbe machen wie Google. Wenn Sie nach einer Wortgruppe suchen, werden Ergebnisse mit einem Teil des Textes angezeigt, in dem Ihr Wort oder Ausdruck erscheint. –

Antwort

0

ja möglich. versuchen, diese

string mytext = "William Shakespeare was an English poet, playwright, and actor. He was born on 26 April 1564 in Stratford-upon-Avon. His father was a successful local businessman and his mother was the daughter of a landowner. Shakespeare is widely regarded as the greatest writer in the English language and the world's pre-eminent dramatist. He is often called England's national poet and nicknamed the Bard of Avon. He wrote about 38 plays, 154 sonnets, two long narrative poems, and a few other verses, of which the authorship of some is uncertain. His plays have been translated into every major living language and are performed more often than those of any other playwright."; 
      string tofind = "Bard of Avon"; 
      string resltantSentence = ""; 
      if (mytext.Contains(tofind)) 
      { 
       // suppose tofind is InStart/In Middle /In the End of a sentence. 
       // and we want the whole sentence out. 
       //so first split all sentences in arrays 
       string[] sentences = mytext.Split(". "); 
       foreach (string sentence in sentences) 
       { 
        //and find the string in each sentence, 
        // if the string is repeated in multiple sentences, then you can have array of "resltantSentence" instead and comment the break statement. 
        if (sentence.Contains(tofind)) 
        { 
         resltantSentence = sentence; 
         break; 
        } 
       } 

      } 
+0

Danke. Ja, das ist eine Möglichkeit, dies bei C# -Code zu tun. Aber meine Frage ist, ob NEST eine Methode oder etwas Ähnliches hat, das das Ergebnis bringt, nach dem ich suche. –

Verwandte Themen