First, your index and analysis chains are considerably different, this can 
easily be a source of problems. In particular, using two different tokenizers 
is a huge red flag. I _strongly_ recommend against this unless you’re totally 
sure you understand the consequences. Additionally, your use of the length 
filter is suspicious, especially since your problem statement is about the 
addition of a single letter term and the min length allowed on that filter is 
2. That said, it’s reasonable to suppose that the ’a’ is filtered out in both 
cases, but maybe you’ve found something odd about the interactions.

Second, I have no idea what this will do. Are the equal signs typos? Used by 
custom code?

>> https://dev.reactome.org/content/query?q=lymphoid+and+a+non-lymphoid+cell&species=Homo+sapiens&species=Entries+without+species&cluster=true

What does “species=“ do? That’s not Solr syntax, so it’s likely that all the 
params with an equal-sign are totally ignored unless it’s just a typo.

Third, the easiest way to see what’s happening under the covers is to add 
“&debug=true” to the query and look at the parsed query. Ignore all the 
relevance calculations for the nonce, or specify “&debug=query” to skip that 
part. 

90% + of the time, the question “why didn’t this query do what I expect” is 
answered by looking at the “&debug=query” output and the analysis page in the 
admin UI. NOTE: for the analysis page be sure to look at _both_ the query and 
index output. Also, and very important about the analysis page (and this is 
confusing) is that this _assumes_ that what you put in the text boxes have made 
it through the query parser intact and is analyzed by the field selected. 
Consider the search "q=field:word1 word2". Now you type “word1 word2” into the 
analysis text box and it looks like what you expect. That’s misleading because 
the query is _parsed_ as "field:word1 default_search_field:word2”. This is 
where “&debug=query” helps.

Best,
Erick

> On Nov 6, 2019, at 2:36 AM, Paras Lehana <paras.leh...@indiamart.com> wrote:
> 
> Hi Walter,
> 
> The solr.StopFilter removes all tokens that are stopwords. Those words will
>> not be in the index, so they can never match a query.
> 
> 
> I think the OP's concern is different results when adding a stopword. I
> think he's using the filter factory correctly - the query chain includes
> the filter as well so it should remove "a" while querying.
> 
> *@Guilherme*, please post results for both the query, the document in
> result you are concerned about and post full result of analysis screen (for
> both query and index).
> 
> On Tue, 5 Nov 2019 at 21:38, Walter Underwood <wun...@wunderwood.org> wrote:
> 
>> No.
>> 
>> The solr.StopFilter removes all tokens that are stopwords. Those words
>> will not be in the index, so they can never match a query.
>> 
>> 1. Remove the lines with solr.StopFilter from every analysis chain in
>> schema.xml.
>> 2. Reload the collection, restart Solr, or whatever to read the new config.
>> 3. Reindex all of the documents.
>> 
>> When indexed with the new analysis chain, the stopwords will not be
>> removed and they will be searchable.
>> 
>> wunder
>> Walter Underwood
>> wun...@wunderwood.org
>> http://observer.wunderwood.org/  (my blog)
>> 
>>> On Nov 5, 2019, at 8:56 AM, Guilherme Viteri <gvit...@ebi.ac.uk> wrote:
>>> 
>>> Ok. I am kind a lost now.
>>> If I open up the console > analysis and perform it, that's the final
>> result.
>>> <Screenshot 2019-11-05 at 14.54.16.png>
>>> 
>>> Your suggestion is: get rid of the <filter stopword.txt> in the
>> schema.xml and during index phase replaceAll("in stopwords.txt"," ") then
>> add to solr. Is that correct ?
>>> 
>>> Thanks David
>>> 
>>>> On 5 Nov 2019, at 14:48, David Hastings <hastings.recurs...@gmail.com
>> <mailto:hastings.recurs...@gmail.com>> wrote:
>>>> 
>>>> Fwd to another server
>>>> 
>>>> no,
>>>>              <filter class="solr.StopFilterFactory" ignoreCase="true"
>>>> words="stopwords.txt"/>
>>>> 
>>>> is still using stopwords and should be removed, in my opinion of course,
>>>> based on your use case may be different, but i generally axe any
>> reference
>>>> to them at all
>>>> 
>>>> On Tue, Nov 5, 2019 at 9:47 AM Guilherme Viteri <gvit...@ebi.ac.uk
>> <mailto:gvit...@ebi.ac.uk>> wrote:
>>>> 
>>>>> Thanks.
>>>>> Haven't I done this here ?
>>>>> <fieldType name="text_field" class="solr.TextField"
>>>>> positionIncrementGap="100" omitNorms="false" >
>>>>>          <analyzer type="index">
>>>>>              <tokenizer class="solr.StandardTokenizerFactory"/>
>>>>>              <filter class="solr.ClassicFilterFactory"/>
>>>>>              <filter class="solr.LengthFilterFactory" min="2"
>> max="20"/>
>>>>>              <filter class="solr.LowerCaseFilterFactory"/>
>>>>>              <filter class="solr.StopFilterFactory" ignoreCase="true"
>>>>> words="stopwords.txt"/>
>>>>>          </analyzer>
>>>>> 
>>>>> 
>>>>>> On 5 Nov 2019, at 14:15, David Hastings <hastings.recurs...@gmail.com
>> <mailto:hastings.recurs...@gmail.com>>
>>>>> wrote:
>>>>>> 
>>>>>> Fwd to another server
>>>>>> 
>>>>>> The first thing you should do is remove any reference to stop words
>> and
>>>>>> never use them, then re-index your data and try it again.
>>>>>> 
>>>>>> On Tue, Nov 5, 2019 at 9:14 AM Guilherme Viteri <gvit...@ebi.ac.uk
>> <mailto:gvit...@ebi.ac.uk>>
>>>>> wrote:
>>>>>> 
>>>>>>> Hi,
>>>>>>> 
>>>>>>> I am performing a search to match a name (text_field), however this
>> term
>>>>>>> contains 'and' and 'a' and it doesn't return any records. If i remove
>>>>> 'a'
>>>>>>> then it works.
>>>>>>> e.g
>>>>>>> Search Term: lymphoid and a non-lymphoid cell
>>>>>>> doesn't work:
>>>>>>> 
>>>>> 
>> https://dev.reactome.org/content/query?q=lymphoid+and+a+non-lymphoid+cell&species=Homo+sapiens&species=Entries+without+species&cluster=true
>> <
>> https://dev.reactome.org/content/query?q=lymphoid+and+a+non-lymphoid+cell&species=Homo+sapiens&species=Entries+without+species&cluster=true
>>> 
>>>>>>> <
>>>>>>> 
>>>>> 
>> https://dev.reactome.org/content/query?q=lymphoid+and+a+non-lymphoid+cell&species=Homo+sapiens&species=Entries+without+species&cluster=true
>>>>>>>> 
>>>>>>> 
>>>>>>> Search term: lymphoid and non-lymphoid cell
>>>>>>> works:
>>>>>>> 
>>>>> 
>> https://dev.reactome.org/content/query?q=lymphoid+and+non-lymphoid+cell&species=Homo+sapiens&species=Entries+without+species&cluster=true
>>>>>>> <
>>>>>>> 
>>>>> 
>> https://dev.reactome.org/content/query?q=lymphoid+and+non-lymphoid+cell&species=Homo+sapiens&species=Entries+without+species&cluster=true
>>>>>>>> 
>>>>>>> interested in the first result
>>>>>>> 
>>>>>>> schema.xml
>>>>>>> <field name="name"                          type="text_field"
>>>>>>> indexed="true"  stored="true"   omitNorms="false"   required="true"
>>>>>>> multiValued="false"/>
>>>>>>> 
>>>>>>>          <analyzer type="query">
>>>>>>>              <tokenizer class="solr.PatternTokenizerFactory"
>>>>>>> pattern="[^a-zA-Z0-9/._:]"/>
>>>>>>>              <filter class="solr.PatternReplaceFilterFactory"
>>>>>>> pattern="^[/._:]+" replacement=""/>
>>>>>>>              <filter class="solr.PatternReplaceFilterFactory"
>>>>>>> pattern="[/._:]+$" replacement=""/>
>>>>>>>              <filter class="solr.PatternReplaceFilterFactory"
>>>>>>> pattern="[_]" replacement=" "/>
>>>>>>>              <filter class="solr.LengthFilterFactory" min="2"
>>>>> max="20"/>
>>>>>>>              <filter class="solr.LowerCaseFilterFactory"/>
>>>>>>>              <filter class="solr.StopFilterFactory"
>> ignoreCase="true"
>>>>>>> words="stopwords.txt"/>
>>>>>>>          </analyzer>
>>>>>>> 
>>>>>>>      <fieldType name="text_field" class="solr.TextField"
>>>>>>> positionIncrementGap="100" omitNorms="false" >
>>>>>>>          <analyzer type="index">
>>>>>>>              <tokenizer class="solr.StandardTokenizerFactory"/>
>>>>>>>              <filter class="solr.ClassicFilterFactory"/>
>>>>>>>              <filter class="solr.LengthFilterFactory" min="2"
>>>>> max="20"/>
>>>>>>>              <filter class="solr.LowerCaseFilterFactory"/>
>>>>>>>              <filter class="solr.StopFilterFactory"
>> ignoreCase="true"
>>>>>>> words="stopwords.txt"/>
>>>>>>>          </analyzer>
>>>>>>>          <analyzer type="query">
>>>>>>>              <tokenizer class="solr.PatternTokenizerFactory"
>>>>>>> pattern="[^a-zA-Z0-9/._:]"/>
>>>>>>>              <filter class="solr.PatternReplaceFilterFactory"
>>>>>>> pattern="^[/._:]+" replacement=""/>
>>>>>>>              <filter class="solr.PatternReplaceFilterFactory"
>>>>>>> pattern="[/._:]+$" replacement=""/>
>>>>>>>              <filter class="solr.PatternReplaceFilterFactory"
>>>>>>> pattern="[_]" replacement=" "/>
>>>>>>>              <filter class="solr.LengthFilterFactory" min="2"
>>>>> max="20"/>
>>>>>>>              <filter class="solr.LowerCaseFilterFactory"/>
>>>>>>>              <filter class="solr.StopFilterFactory"
>> ignoreCase="true"
>>>>>>> words="stopwords.txt"/>
>>>>>>>          </analyzer>
>>>>>>>      </fieldType>
>>>>>>> 
>>>>>>> stopwords.txt
>>>>>>> #Standard english stop words taken from Lucene's StopAnalyzer
>>>>>>> a
>>>>>>> b
>>>>>>> c
>>>>>>> ....
>>>>>>> an
>>>>>>> and
>>>>>>> are
>>>>>>> 
>>>>>>> Running SolR 6.6.2.
>>>>>>> 
>>>>>>> Is there anything I could do to prevent this ?
>>>>>>> 
>>>>>>> Thanks
>>>>>>> Guilherme
>>>>> 
>>>>> 
>>> 
>> 
>> 
> 
> -- 
> -- 
> Regards,
> 
> *Paras Lehana* [65871]
> Development Engineer, Auto-Suggest,
> IndiaMART Intermesh Ltd.
> 
> 8th Floor, Tower A, Advant-Navis Business Park, Sector 142,
> Noida, UP, IN - 201303
> 
> Mob.: +91-9560911996
> Work: 01203916600 | Extn:  *8173*
> 
> -- 
> IMPORTANT: 
> NEVER share your IndiaMART OTP/ Password with anyone.

Reply via email to