SynonymFilter позволяет определить < href = "http://lucene.apache.org/core/4_0_0/analyzers-common/org/apache/lucene/analysis/synonym/SynonymMap.html"> SynonymnMap в простой пользовательский анализатор.
Вы можете создать собственный анализатор, просто переопределив Analyzer.createComponents и передайте настраиваемую версию как IndexWriter, так и QueryParser при записи и поиске соответственно.
Следует учитывать, что в вашем случае все возможные синонимы будут исключены, что будет означать передачу includeOrig значения true в Builder.add. В любом случае здесь есть преимущества, вы можете изучить, какой из них лучше всего удовлетворит ваши потребности.
Analyzer
Lucene разработан, чтобы его можно было легко расширить, чтобы легко определить форматирование для вашего конкретного случая. Документация Analyzer
API, ссылка на которую приведена выше, предоставляет пример переопределения метода createComponents для вашего пользовательского анализатора.
Что-то типа:
protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
Tokenizer source = new ClassicTokenizer(Version.LUCENE_40, reader);
TokenStream filter = new StandardFilter(Version.LUCENE_40, source);
filter = new LowerCaseFilter(Version.LUCENE_40,filter);
filter = new SynonymFilter(filter, mySynonymMap, false);
//Whatever other filter you want to add to the chain, being mindful of order.
return new TokenStreamComponents(source, filter);
}
И вам нужно будет определить mySynonymMap из примера, который является SynonymnMap
. SynonymMap
обычно должен создаваться SynonymMap.Builder
с помощью метода add(CharsRef, CharsRef, boolean)
, указанного выше.
SynonymMap.Builder builder = new SynonymMap.Builder(true);
builder.add(new CharsRef("crimson"), new CharsRef("red"), true);
//Be sure the boolean last arg you pass there is the one you want. There are significant tradeoffs here.
//Add as many terms as you like here...
SynonymMap mySynonymMap = builder.build();
Также существует WordNetSynonymParser
, если вы предпочитаете это, который выглядит как просто SynonymMap.Builder, предназначенный для быстрого чтения специфических спецификаций.
person
femtoRgon
schedule
28.03.2013