Lucene предоставляет базовый класс org.apache.lucene.analysis.Analyzer
, который можно использовать, если вы хотите написать собственный анализатор.
Вы можете проверить org.apache.lucene.analysis.standard.StandardAnalyzer
класс, расширяющий возможности Analyzer.
Затем в YourAnalyzer вы будете связывать StandardAnalyzer и SnowballAnalyzer, используя фильтры, используемые этими анализаторами, например:
TokenStream result = new StandardFilter(tokenStream);
result = new SnowballFilter(result, stopSet);
Затем в существующем коде вы сможете создать IndexWriter с собственной реализацией Analyzer, которая объединяет фильтры Standard и Snowball.
Совершенно не по теме:
Я полагаю, вам в конечном итоге потребуется настроить свой собственный способ обработки запросов. Это уже реализовано внутри Solr.
Сначала напишите свой собственный поисковый компонент, расширив SearchComponent и определив его в SolrConfig.xml, например:
<searchComponent name="yourQueryComponent" class="org.apache.solr.handler.component.YourQueryComponent"/>
Затем напишите ваш обработчик поиска (обработчик запросов), расширив SearchHandler, и определите его в SolrConfig.xml:
<requestHandler name="YourRequestHandlerName" class="org.apache.solr.handler.component.YourRequestHandler" default="true">
<!-- default values for query parameters -->
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">1000</int>
<str name="fl">*</str>
<str name="version">2.1</str>
</lst>
<arr name="components">
<str>yourQueryComponent</str>
<str>facet</str>
<str>mlt</str>
<str>highlight</str>
<str>stats</str>
<str>debug</str>
</arr>
</requestHandler>
Затем, когда вы отправляете URL-запрос в Solr, просто включите дополнительный параметр qt = YourRequestHandlerName, который приведет к тому, что ваш обработчик запроса будет использоваться для этого запроса.
Подробнее о компонентах поиска.
Подробнее о RequestHandlers.