Ключевые слова в Lucene.Net - PullRequest
       25

Ключевые слова в Lucene.Net

1 голос
/ 14 ноября 2011

Я использую Lucene.Net 2.9.2 и считаю, что мне нужно написать собственный токенизатор, но я хотел проверить, не хватает ли что-то очевидное.

Документ состоит из заголовка, ключевых слов и содержимого, а также некоторых метаданных, таких как автор, дата и т. Д., Каждый из которых хранится в виде поля. Документы являются техническими документами программного обеспечения и могут содержать фразы, такие как «.Net», «C ++», «C #» в заголовке, ключевые слова и / или содержимое.

Я использую KeywordAnalyzer для поля Keyword и StandardAnalyzer для заголовка и контента - необходимы StopWords, LowerCase и т. Д., Поскольку документы могут быть очень длинными.

Я также написал собственный фильтр синонимов для поиска, поскольку я хочу искать, например, «C #», но также распознавать «CSharp», «C # .Net» и т. Д. Токенизатор уже удалил «#» «C #» или «++» из C ++ и, следовательно, могут быть перепутаны, скажем, с языковой ссылкой «C»

Мне кажется, что когда я индексирую заголовок и контент, мне нужно разветвлять токенизацию в зависимости от того, является ли текущий токен частью ключевых фраз или любого из его синонимов.

Это лучший подход? Большое спасибо заранее :)

Ответы [ 2 ]

2 голосов
/ 24 января 2012

Настройка токенизатора может быть выполнена с помощью одного из следующих классов:

1). Lucene.Net.Analysis.CharTokenizer 2). Lucene.Net.Analysis.Tokenizer

public class AlphaNumbericTokenizer : Lucene.Net.Analysis.CharTokenizer
{
     public AlphaNumbericTokenizer (System.IO.TextReader input) : base(input)
     {
     }
     protected override bool IsTokenChar(char c)
     {
       //TODO: Logic for identifying token or token separator
       return char.IsLetterOrDigit(c);
     }
}

Пожалуйста, обратитесь, http://karticles.com/NoSql/lucene_custom_tokenizer.html

1 голос
/ 15 ноября 2011

Я думаю, что вы можете использовать WhitespaceTokenizer, затем подключить KeywordMarkerFilter, чтобы пометить некоторые токены как «нерушимые» и, наконец, предоставить свой собственный фильтр, который удаляет знаки препинания. Может быть, кто-то со знанием Lucene.Net предложит что-нибудь; например в Solr WordDelimiterFilter может быть использовано.

...