Hello,
I'm new to Solr and to this user group. Any help with this problem would be
greatly appreciated.

I'm trying to get partial keyword search results working. This seems like a
fairly common problem, I've found numerous google results offering
solutions
for instance
https://stackoverflow.com/questions/28753671/how-to-configure-solr-to-do-partial-word-matching
but when I attempt to implement them I'm not receiving the desired results.

I'm running solr 8.5.2 in standalone mode, manually editing the configs.

I have configured the title field as

<field name="title" type="edge_ngram_test_5" indexed="true" stored="true"
multiValued="false"/>

I have also tried it with this parameter  omitTermFreqAndPositions="true"

The field type definition is:

<fieldType name="edge_ngram_test_5" class="solr.TextField" omitNorms="false"
>
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="35"
/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>

I'm using edismax and searching on title.

http://localhost:8983/solr/events/select?defType=edismax&df=title&fl=title&q=educatio

when using edge_ngram_test_5

edu          correctly finds 4 results
educa       finds 0
educat      finds 0
educati     finds 0
educatio   finds 0
education correctly finds 4.

Steps taken between changes to the schema.
bin/solr restart
reimport data
core admin > reload core

In admin, I see the correct value,
Typeedge_ngram_test_5 when I check in schema.

In admin , when I check in analysis and search on text analyse

[image: image.png]
it appears to be breaking the word down into letters as I would guess is
the correct step.

These are the query results:
[image: image.png]

it looks like it is applying the correct filter names and the search term
isn't being altered. I don't understand enough to be able to determine why
the query can't find the search result when it appears to have been
indexed. Any advice is very welcome as I've spent hours trying to get this
working.


I've also tried with:
<fieldType name="edge_n2_kw_text" class="solr.TextField" omitNorms="true"
positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="25"
/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

<fieldType name="text_edgengram_prod" class="solr.TextField"
positionIncrementGap="100" >
<analyzer type="index" >
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words=
"stopwords.txt" />
<filter class="solr.PorterStemFilterFactory" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="30"/>
<!-- RDH - removed side="front"-->
</analyzer>
<analyzer type="query" >
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words=
"stopwords.txt" />
<filter class="solr.PorterStemFilterFactory" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
</fieldType>


<fieldType name="edge_ngram_test_4" class="solr.TextField"
positionIncrementGap="100" >
<analyzer type="index" >
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25"
/>
</analyzer>
<analyzer type="query" >
<tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>
</fieldType>


Thanks in advance for any insights offered.
Kind regards,
Phil.

Reply via email to