Я использую Lucene.Net 2.9.2 и считаю, что мне нужно написать собственный токенизатор, но я хотел проверить, не хватает ли что-то очевидное.
Документ состоит из заголовка, ключевых слов и содержимого, а также некоторых метаданных, таких как автор, дата и т. Д., Каждый из которых хранится в виде поля. Документы являются техническими документами программного обеспечения и могут содержать фразы, такие как «.Net», «C ++», «C #» в заголовке, ключевые слова и / или содержимое.
Я использую KeywordAnalyzer для поля Keyword и StandardAnalyzer для заголовка и контента - необходимы StopWords, LowerCase и т. Д., Поскольку документы могут быть очень длинными.
Я также написал собственный фильтр синонимов для поиска, поскольку я хочу искать, например, «C #», но также распознавать «CSharp», «C # .Net» и т. Д. Токенизатор уже удалил «#» «C #» или «++» из C ++ и, следовательно, могут быть перепутаны, скажем, с языковой ссылкой «C»
Мне кажется, что когда я индексирую заголовок и контент, мне нужно разветвлять токенизацию в зависимости от того, является ли текущий токен частью ключевых фраз или любого из его синонимов.
Это лучший подход? Большое спасибо заранее :)