Partial string search in Apache Solr

Last updated 
Jan 19, 2019
 min read
Episode 
 min
Published 
Jan 19, 2019
 min read
Published 
Jan 19, 2019
 min

In this tutorial, we will see a demonstration of how to configure Apache Solr for partial string search.

Create demo core via below command.

sudo su - solr -c "/opt/solr/bin/solr create -c demo -n data_driven_schema_configs"

Add test data to the demo core.

curl http://localhost:8983/solr/demo/update?commitWithin=3000 -d '[{'name':'test'},{'name':'test1'},{'name':'abc'}]'

Try to search partial string to the demo core using below command.

curl http://localhost:8983/solr/demo/query -d 'q=name:t'

Result:

{
  "responseHeader":{
    "status":0,
    "QTime":1,
    "params":{
      "q":"name:t"}},
  "response":{"numFound":0,"start":0,"docs":[]
  }
}

Number of objects found = 0

Try to search full string to the demo core using below command.

curl http://localhost:8983/solr/demo/query -d 'q=name:test'

Result:

{
  "responseHeader":{
    "status":0,
    "QTime":2,
    "params":{
      "q":"name:test"}},
  "response":{"numFound":1,"start":0,"docs":[
      {
        "name":["test"],
        "id":"eed9ebdd-05e1-463c-a5fe-e31b359a166e",
        "_version_":1590098186233446400}]
  }
}

Number of objects found = 1

Configure solr for partial string search

Add below code to the var/solr/data/demo(core name)/conf/managed-schema file.

1<fieldType name="text_ngrm" class="solr.TextField" positionIncrementGap="100">
2 
3  <analyzer type="index">
4      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
5      <filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="50"/>
6
7      <filter class="solr.LowerCaseFilterFactory"/>
8  </analyzer>
9  <analyzer type="query">
10      <tokenizer class="solr.WhitespaceTokenizerFactory"/>
11      <filter class="solr.LowerCaseFilterFactory"/>
12  </analyzer>
13</fieldType>
14
15<field name="name" type="text_ngrm" indexed="true" stored="true"/>

Change type of name field to text_ngram.

Remove all documents and add it again.

curl "http://localhost:8983/solr/Demo/update?commit=true" -H "Content-Type: text/xml" --data-binary '<delete><query>*:*</query></delete>'

After its done, we restart the solr.

sudo service solr restart

Try to search partial string to the demo core using below command.

curl http://localhost:8983/solr/demo/query -d 'q=name:t'

Result:

{
  "responseHeader":{
    "status":0,
    "QTime":3,
    "params":{
      "q":"name:t"}},
  "response":{"numFound":2,"start":0,"docs":[
      {
        "name":"test",
        "id":"9603c801-9a0c-4076-a958-7353ca69814f",
        "_version_":1593837840603545600},
      {
        "name":"test1",
        "id":"36f94100-d094-4638-8803-1dd92f57ad56",
        "_version_":1593837840712597504}]
  }
}

Number of objects found=2

Partial string search is working now……….

Finished…..:)

Also read: How to use Excel sheets in Python using openpyxl

Authors

Nensi Trambadiya

Software Engineer
I’m a Software Engineer with a passion for problem-solving and building efficient, high-performing systems. I specialize in creating reliable, user-centric software that meets both technical and business needs. I’m always exploring new tools and techniques to stay ahead in an ever-evolving tech landscape.

Podcast Transcript

Episode
 - 
minutes

Host

No items found.

Guests

No items found.

Tags

No items found.

Have a project in mind?

Read