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