Вы можете использовать маркер для обозначения «найденных слов». Если вы хотите найти их по другой причине, вы все равно можете использовать маркер и затем использовать регулярное выражение (или простой цикл подстроки) для извлечения слов.
Например:
Query objQuery = new TermQuery(new Term("content", strQuery));
QueryScorer scorer = new QueryScorer(objQuery , "content");
SimpleHTMLFormatter formatter = new SimpleHTMLFormatter("<b>","</b>");
highlighter = new Highlighter(formatter, scorer);
highlighter.TextFragmenter = new SimpleFragmenter(9999);
for (int i = 0; i < topRealtedDocs.ScoreDocs.Length; i++)
{
TokenStream stream = TokenSources.GetAnyTokenStream(searcher.IndexReader, topRealtedDocs.ScoreDocs[i].Doc, "content", analyzer);
string strSnippet = highlighter.GetBestFragment(stream, doc.GetValue("content"));
// here you can do what you want with the snippet. add it to your result or for example extract the words (not with a regex - this is just an example from here! use what ever you need):
List<string> foundPhrases = new List<string>();
while (strSnippet.IndexOf("<b>") > -1)
{
int indexStart = strSnippet.IndexOf("<b>");
int indexEnd = strSnippet.IndexOf("</b>");
foundPhrases.Add(strSnippet.Substring(indexStart, indexEnd - indexStart));
strSnippet = strSnippet.Substring(indexEnd);
}
}
Омри
Вы хотите, чтобы выделить совпадающие слова в найденных документах? – rae1
Не могли бы вы также добавить код для вашего поиска? –