Выделение Поиска Lucene.NET, которое уважает HTML-ТЭГИ

Я нахожу, что идея не репродуцирования ошибки фиксирует его не что иное как причудливый.

, В конце концов, Вы не можете быть уверены, что что-то - проблема, пока Вы не можете воспроизвести ее. До тех пор это - просто догадка (даже если это хорошо осведомлено, это - все еще догадка).

Теперь, думаю ли Вы модульный тест или не я, не важно этому обсуждению, так как воспроизводимость является просто вопросом Вас, нашли ошибку?. Модульный тест не поможет Вам, если Вы протестируете на неправильную вещь, работая над некоторыми неправильными предположениями или просто неправильно поймете (возможно неопределенный) отчет об ошибках о том, что на самом деле происходит.

Вот почему Вы воспроизводите проблему.

8
задан 21 August 2009 в 22:04
поделиться

1 ответ

Думаю, я понял это ...

Я создал подкласс StandardAnalyzer и изменил TokenStream на этот:

public override Lucene.Net.Analysis.TokenStream TokenStream(string fieldName, System.IO.TextReader reader)
    {
        var start = base.TokenStream(fieldName, reader);
        HtmlStripCharFilter filter = new HtmlStripCharFilter(reader);
        TokenStream result = new StandardFilter(filter);
        return new StopFilter(new LowerCaseFilter(result), this.stopSet);
    }

и реализовал HtmlStripCharFilter как:

public class HtmlStripCharFilter : Lucene.Net.Analysis.CharTokenizer
{
    private bool inTag = false;

    public HtmlStripCharFilter(TextReader input)
        : base(input)
    {
    }

    protected override bool IsTokenChar(char c)
    {
        if (c == '<' && inTag == false)
        {
            inTag = true;
            return false;
        }
        if (c == '>' && inTag)
        {
            inTag = false;
            return false;
        }

        return !inTag && !Char.IsWhiteSpace(c);
    }
}

Он движется в правильном направлении, но по-прежнему нужно много работать, прежде чем это будет сделано. Если у кого-то есть лучшее решение (прочтите «ПРОВЕРЕННОЕ» решение), я хотел бы его услышать.

3
ответ дан 6 December 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: