From the Solr ref guide: you forgot the flatten graph filter at the end - this 
is needed for any graph filter you use : <filter 
class="solr.FlattenGraphFilterFactory"/> <!-- required on index analyzers after 
graph filters -->

> Am 09.03.2021 um 22:21 schrieb Shaun Campbell <campbell.sh...@gmail.com>:
> 
> Hi Susmit
> 
> That didn't seem to work. Don't know if I was doing something wrong. I
> ended up writing a regex to split the incoming string into strings of
> numbers and letters and build up the query manually. It's all working now.
> 
> Thanks
> Shaun
> 
>> On Tue, 9 Mar 2021 at 16:50, Susmit <shukla.sus...@gmail.com> wrote:
>> 
>> q.op = AND could be useful. the parts broken down by WDgff joined by ‘AND’
>> 
>> Sent from my iPhone
>> 
>>> On Mar 9, 2021, at 3:07 AM, Shaun Campbell <campbell.sh...@gmail.com>
>> wrote:
>>> 
>>> Hi
>>> 
>>> I'm trying to produce an autosuggestion field for project ids using
>>> ngrams and WordDelimiterGraphFilterFactory to split on word number
>>> boundaries.
>>> 
>>> The ids have various formats ranging from nihr123456, 12/34/567,
>>> DRF-2018-11-ST2-062.
>>> 
>>> What I'm trying to do is allow the user to enter the number parts or the
>>> alphabetical characters, or both and match all. The basic autosuggestion
>> is
>>> working but I have an issue where the query is matching some but not all
>> of
>>> the component parts. For example:
>>> 
>>> I enter DRF-2018-11 and it matches:
>>> 
>>> DRF-2018-11-ST2-062
>>> PB-PG-0909-20188
>>> CS-2018-18-ST2-005
>>> 
>>> 
>>> The first one is correct because it matches the DRF, the 2018 and the 11.
>>> The second and third ones I don't want because there's no DRF, or 11 in
>> the
>>> ids.  Is there any way to get around this problem in Solr configuration,
>> or
>>> do I have to split the id manually in code and construct a query where
>> the
>>> id is DRF AND id is 2018 AND id is 11?
>>> 
>>> Here is my field type configuration:
>>> 
>>> <fieldType name="ngram_award_id" class="solr.TextField"
>>> positionIncrementGap="100" autoGeneratePhraseQueries="true">
>>> <analyzer type="index">
>>> 
>>> <tokenizer class="solr.StandardTokenizerFactory"/>
>>> <filter class="solr.WordDelimiterGraphFilterFactory"
>> generateWordParts="1"
>>> generateNumberParts="1" catenateWords="0" catenateNumbers="0"
>>> catenateAll="0" splitOnCaseChange="0" splitOnNumerics="1"/>
>>> <filter class="solr.LowerCaseFilterFactory"/>
>>> <filter class="solr.FlattenGraphFilterFactory" />
>>> <filter class="solr.EdgeNGramFilterFactory" minGramSize="3"
>>> maxGramSize="7"/>
>>> 
>>> </analyzer>
>>> <analyzer type="query">
>>> 
>>> <tokenizer class="solr.StandardTokenizerFactory"/>
>>> <filter class="solr.WordDelimiterGraphFilterFactory"
>> generateWordParts="1"
>>> generateNumberParts="1" catenateWords="0" catenateNumbers="0"
>>> catenateAll="0" splitOnCaseChange="0"  splitOnNumerics="1"/>
>>> <filter class="solr.LowerCaseFilterFactory"/>
>>> 
>>> </analyzer>
>>> </fieldType>
>>> 
>>> Thanks
>>> Shaun
>> 

Reply via email to