Lucene HTMLFormatter跳过最后一个字符

Lucene HTMLFormatter跳过最后一个字符,lucene,lucene.net,highlighter.net,Lucene,Lucene.net,Highlighter.net,我有这个简单的Lucene搜索代码(修改自) 类程序 { 静态void Main(字符串[]参数) { StandardAnalyzer=新的StandardAnalyzer(); 目录索引=新的RAMDirectory(); IndexWriter w=新的IndexWriter(索引、分析器、真、, IndexWriter.MaxFieldLength.UNLIMITED); addDoc(w,“表1内容”); addDoc(w,“表2”); addDoc(w,“内容”); addDoc(w

我有这个简单的Lucene搜索代码(修改自)

类程序
{
静态void Main(字符串[]参数)
{
StandardAnalyzer=新的StandardAnalyzer();
目录索引=新的RAMDirectory();
IndexWriter w=新的IndexWriter(索引、分析器、真、,
IndexWriter.MaxFieldLength.UNLIMITED);
addDoc(w,“表1内容”);
addDoc(w,“表2”);
addDoc(w,“内容”);
addDoc(w,“计算机科学的艺术”);
w、 Close();
字符串querystr=“table”;
Query q=新的QueryParser(“title”,analyzer).Parse(querystr);
Lucene.Net.Search.IndexSearcher searcher=new
Lucene.Net.Search.indexsearch(索引);
Hits hitsFound=searcher.Search(q);
SimpleHTMLFormatter格式化程序=新的SimpleHTMLFormatter(“*”,“*”);
Highlighter=null;
highlighter=新的highlighter(格式化程序、新的QueryScorer(searcher.Rewrite(q));
对于(int i=0;i

突出显示的结果似乎总是跳过上一个表标记的结束“>”。有什么建议吗

Lucene的荧光笔,开箱即用,适合处理纯文本。如果您试图突出显示HTML或任何标记文本,它将无法正常工作

我最近遇到了同样的问题,并在Solr的HTMLStripReader中找到了一个解决方案,它跳过了标记中的内容。解决方案在我的博客下面的URL中列出


我本可以在这里发布代码,但我的解决方案适用于Lucene Java。对于.Net,您必须找到HTMLStripReader的等效项。

已解决。显然我的Highlighter.Net版本是过时的。升级到2.3.2.1解决了问题

感谢您的链接+1美元。但我的问题是别的。补充一个答案
 class Program
    {
        static void Main(string[] args)
        {

            StandardAnalyzer analyzer = new StandardAnalyzer();
            Directory index = new RAMDirectory();
            IndexWriter w = new IndexWriter(index, analyzer, true,
                    IndexWriter.MaxFieldLength.UNLIMITED);
            addDoc(w, "Table 1 <table> content </table>");
            addDoc(w, "Table 2");
            addDoc(w, "<table> content </table>");
            addDoc(w, "The Art of Computer Science");
            w.Close();


            String querystr = "table";


            Query q = new QueryParser("title", analyzer).Parse(querystr);
            Lucene.Net.Search.IndexSearcher searcher = new
            Lucene.Net.Search.IndexSearcher(index);
            Hits hitsFound = searcher.Search(q);

            SimpleHTMLFormatter formatter = new SimpleHTMLFormatter("*", "*");

            Highlighter highlighter = null;
            highlighter = new Highlighter(formatter, new QueryScorer(searcher.Rewrite(q)));

            for (int i = 0; i < hitsFound.Length(); i++)
            {
                Console.WriteLine(highlighter.GetBestFragment(analyzer, "title", hitsFound.Doc(i).Get("title")));
             //   Console.WriteLine(hitsFound.Doc(i).Get("title"));
            }
            Console.ReadKey();



        }
        private static void addDoc(IndexWriter w, String value)
        {
            Document doc = new Document();
            doc.Add(new Field("title", value, Field.Store.YES, Field.Index.ANALYZED));
            w.AddDocument(doc);
        }
    }