On Wed, Sep 28, 2016 at 3:21 AM, Alexandre Rafalovitch <arafa...@gmail.com> wrote:
> Before you go down this rabbit hole, are you actually sure this does > what you think it does? > > As far as I can tell, that parameter is for analyzing/parsing the > synonym entries in the synonym file. Not the incoming search queries > or text actually being indexed. Yes, this is exactly what I am looking for. I have already customized my indexing and query analyzer for that field, by using a custom filter that performs lemmatization for the Italian language. Hence, the token I have in my index (or in the parsed query) are something like evento_n (event -> noun) or mangiare_v (eat -> verb). Now I would like to define synonyms without having to know the "lemma" form. For example, I would like to have in my synonyms file: evento,festa,spettacolo and make the *SynonymFilter* analyzer transform them in *evento_n,festa_n,spettacolo_n* This way, a query like *myField:spettacoli* (the plural form of *spettacolo*) would be analyzed as *myField:(spettacolo_n evento_n festa_n)*. > Did you get it to work with the simpler configuration? > Yes, I carried out an experiment using the standard Lucene ItalianAnalyzer class (both at indexing and query time and for the SynonymFilter) and it works the way I was expecting. Unfortunately I cannot use this analyzer because I have to apply my custom lemmatization filter. Therefore, I am confident I can achieve my desired result by defining a custom Analyzer class, but I would have preferred to be able to alter the filter chain just modifying the *schema.xml* file. Is there an alternative way to achieve the same result I am not seeing? Thank you very much for your help. Bye, *Raf* > > Just double checking. > > Regards, > Alex. > ---- > Newsletter and resources for Solr beginners and intermediates: > http://www.solr-start.com/ > > > On 27 September 2016 at 22:45, Raf <r.ventag...@gmail.com> wrote: > > On Tue, Sep 27, 2016 at 4:22 PM, Alexandre Rafalovitch < > arafa...@gmail.com> > > wrote: > > > >> Looking at the code (on GitHub is easiest), it can take either > >> analyzer or tokenizer but definitely not any chain definitions. This > >> seems to be the same all the way to 6.2.1. > >> > > > > Thanks for your answer Alex. > > > > Does anyone know if it exists a viable alternative to make it > configurable > > inside the schema.xml instead of defining a custom Java class? > > > > I was thinking about something like: > > > > * defining the *analyzer* outside of the *field* element, giving it a > name: > > <analyzer name="myAnalyzer"> > > <tokenizer class="MyTokenizer" /> > > <filter class="solr.LowerCaseFilterFactory"/> > > <filter class="MyFilter_1" /> > > </analyzer> > > > > * referring to it inside the *SynonymFilter* definition by its name: > > <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" > > ignoreCase="true" expand="true" analyzer="myAnalyzer"/> > > > > Unfortunately I have not found anything like this inside the Solr > > documentation. > > Is it possible to achieve something like that or the only solution is > > writing a custom Java class for each combination filter I need to use for > > synonyms analysis? > > > > Thanks. > > > > Bye, > > *Raffaella* > > > > > > ---- > >> Newsletter and resources for Solr beginners and intermediates: > >> http://www.solr-start.com/ > >> > >> > >> On 27 September 2016 at 21:10, Raf <r.ventag...@gmail.com> wrote: > >> > Hi, > >> > is it possible to configure a custom analysis for synonyms the same > way > >> we > >> > do for index/query field analysis? > >> > > >> > Reading the *SynonymFilter* documentation[0], I have found I can > specify > >> a > >> > custom analyzer by writing its class name. > >> > > >> > Example: > >> > <fieldType name="myField_it" class="solr.TextField" > > >> > <analyzer> > >> > <tokenizer class="MyTokenizer" /> > >> > <filter class="solr.LowerCaseFilterFactory"/> > >> > <filter class="MyFilter_1" /> > >> > <filter class="MyFilter_2" /> > >> > <filter class="solr.SynonymFilterFactory" > >> synonyms="synonyms.txt" > >> > ignoreCase="true" expand="true" > >> > analyzer="org.apache.lucene.analysis.it.ItalianAnalyzer"/> > >> > </analyzer> > >> > </fieldType> > >> > > >> > > >> > What I would like to achieve, instead, it is something like this: > >> > <fieldType name="myField_it" class="solr.TextField"> > >> > <analyzer> > >> > <tokenizer class="MyTokenizer" /> > >> > <filter class="solr.LowerCaseFilterFactory"/> > >> > <filter class="MyFilter_1" /> > >> > <filter class="MyFilter_2" /> > >> > <filter class="solr.SynonymFilterFactory" > >> synonyms="synonyms.txt" > >> > ignoreCase="true" expand="true"> > >> > <analyzer> > >> > <tokenizer class="MyTokenizer" /> > >> > <filter class="solr.LowerCaseFilterFactory"/> > >> > <filter class="MyFilter_1" /> > >> > </analyzer> > >> > </filter> > >> > </analyzer> > >> > </fieldType> > >> > > >> > > >> > I have tried to configure it this way, but it does not work. > >> > I do not get any configuration error, but the custom analyzer is not > >> > applied to synonyms. > >> > > >> > Is it possible to achieve this result by configuration or am I forced > to > >> > write a custom Analyzer class? > >> > > >> > I am currently using Solr 5.2.1. > >> > At the moment I cannot upgrade to a newer version. > >> > > >> > > >> > Thank you very much for any help you can provide. > >> > > >> > Regards, > >> > *Raf* > >> > > >> > > >> > [0] > >> > http://archive.apache.org/dist/lucene/solr/ref-guide/ > >> apache-solr-ref-guide-5.2.pdf > >> > p. 132 > >> >