Keyword Map


(banderon1) #1

I have two text fields that are indexed (name and description), and when a
query is executed, I want to be able to search for certain keywords based
on the query. For example, if I search for "kleenex", I also want it to
search for "facial tissue". I have hundreds/thousands of keywords to map,
what is the right way to do this?

--


(Otis Gospodnetić) #2

Hi,

It sounds like you may be looking for synonyms?
http://www.elasticsearch.org/guide/reference/index-modules/analysis/synonym-tokenfilter.html

Otis

Search Analytics - http://sematext.com/search-analytics/index.html
Performance Monitoring - http://sematext.com/spm/index.html

On Friday, September 21, 2012 5:32:37 PM UTC-4, banderon1 wrote:

I have two text fields that are indexed (name and description), and when a
query is executed, I want to be able to search for certain keywords based
on the query. For example, if I search for "kleenex", I also want it to
search for "facial tissue". I have hundreds/thousands of keywords to map,
what is the right way to do this?

--


(banderon1) #3

Thanks, Otis, this looks like the correct path, but I'm still not getting
proper results. I am trying to add the synonyms filter when adding items to
my index. I seem to have the proper syntax (copy & pasted from the
example), but when I add documents (bulk), I don't see any change to my
index. And when I search, it doesn't appear to have any change. How can I
tell if the synonyms filter is being implemented on my index?

On Fri, Sep 21, 2012 at 7:09 PM, Otis Gospodnetic <
otis.gospodnetic@gmail.com> wrote:

Hi,

It sounds like you may be looking for synonyms?

http://www.elasticsearch.org/guide/reference/index-modules/analysis/synonym-tokenfilter.html

Otis

Search Analytics - http://sematext.com/search-analytics/index.html
Performance Monitoring - http://sematext.com/spm/index.html

On Friday, September 21, 2012 5:32:37 PM UTC-4, banderon1 wrote:

I have two text fields that are indexed (name and description), and when
a query is executed, I want to be able to search for certain keywords based
on the query. For example, if I search for "kleenex", I also want it to
search for "facial tissue". I have hundreds/thousands of keywords to map,
what is the right way to do this?

--

--


(Otis Gospodnetić) #4

Hi,

You could peek at your index and see if your synonyms are getting indexed.
The skywalker plugin should let you do that.

Otis

Search Analytics - http://sematext.com/search-analytics/index.html
Performance Monitoring - http://sematext.com/spm/index.html

On Tuesday, September 25, 2012 5:57:27 PM UTC-4, banderon1 wrote:

Thanks, Otis, this looks like the correct path, but I'm still not getting
proper results. I am trying to add the synonyms filter when adding items to
my index. I seem to have the proper syntax (copy & pasted from the
example), but when I add documents (bulk), I don't see any change to my
index. And when I search, it doesn't appear to have any change. How can I
tell if the synonyms filter is being implemented on my index?

On Fri, Sep 21, 2012 at 7:09 PM, Otis Gospodnetic <otis.gos...@gmail.com<javascript:>

wrote:

Hi,

It sounds like you may be looking for synonyms?

http://www.elasticsearch.org/guide/reference/index-modules/analysis/synonym-tokenfilter.html

Otis

Search Analytics - http://sematext.com/search-analytics/index.html
Performance Monitoring - http://sematext.com/spm/index.html

On Friday, September 21, 2012 5:32:37 PM UTC-4, banderon1 wrote:

I have two text fields that are indexed (name and description), and when
a query is executed, I want to be able to search for certain keywords based
on the query. For example, if I search for "kleenex", I also want it to
search for "facial tissue". I have hundreds/thousands of keywords to map,
what is the right way to do this?

--

--


(banderon1) #5

Thanks for introducing me to the skywalker plugin, this looks pretty cool!
I've been testing my data all morning, and cannot get these indices working
with synonyms :frowning: Here is what I have added to my index before creating it:

{"analysis":{"analyzer":{"synonym":{"tokenizer":"whitespace","filter":["synonym"]}},"filter":{"synonym":{"type":"synonym","synonyms":["embriodery
, embroidery"]}}}}

And here is what skywalker shows is in my index (I've only added 1 item to
the index for simplicity, which happens to have the term "embriodery" in
one of the text fields).

http://pastebin.com/Ut0chNP1

No mention of synonyms, which is what I was hoping for... Any ideas?

On Tue, Sep 25, 2012 at 8:23 PM, Otis Gospodnetic <
otis.gospodnetic@gmail.com> wrote:

Hi,

You could peek at your index and see if your synonyms are getting indexed.
The skywalker plugin should let you do that.

Otis

Search Analytics - http://sematext.com/search-analytics/index.html
Performance Monitoring - http://sematext.com/spm/index.html

On Tuesday, September 25, 2012 5:57:27 PM UTC-4, banderon1 wrote:

Thanks, Otis, this looks like the correct path, but I'm still not getting
proper results. I am trying to add the synonyms filter when adding items to
my index. I seem to have the proper syntax (copy & pasted from the
example), but when I add documents (bulk), I don't see any change to my
index. And when I search, it doesn't appear to have any change. How can I
tell if the synonyms filter is being implemented on my index?

On Fri, Sep 21, 2012 at 7:09 PM, Otis Gospodnetic otis.gos...@gmail.comwrote:

Hi,

It sounds like you may be looking for synonyms?
http://www.elasticsearch.org/guide/reference/index-modules/
analysis/synonym-tokenfilter.**htmlhttp://www.elasticsearch.org/guide/reference/index-modules/analysis/synonym-tokenfilter.html

Otis

Search Analytics - http://sematext.com/search-**analytics/index.htmlhttp://sematext.com/search-analytics/index.html
Performance Monitoring - http://sematext.com/spm/index.**htmlhttp://sematext.com/spm/index.html

On Friday, September 21, 2012 5:32:37 PM UTC-4, banderon1 wrote:

I have two text fields that are indexed (name and description), and
when a query is executed, I want to be able to search for certain keywords
based on the query. For example, if I search for "kleenex", I also want it
to search for "facial tissue". I have hundreds/thousands of keywords to
map, what is the right way to do this?

--

--

--


(banderon1) #6

Thanks Otis for introducing me to the skywalker plugin, this is very
helpful. However, I am not seeing the synonyms in my index. Here is the
curl request I am using to create my index:

curl -XPUT 'http://localhost:9200/netplenish/' -d '{

"settings" : {

"index" : {

  "analysis" : {

    "analyzer" : {

      "synonym" : {

        "tokenizer" : "whitespace",

        "filter" : ["synonym"]

      }

    },

    "filter" : {

      "synonym" : {

        "type" : "synonym",

        "synonyms" : ["embroidery, embriodery"]

      }

    }

  }

}

}

}'

And here is the output I get from skywalker (curl -XGET
'localhost:9200/netplenish/_skywalker')

http://pastebin.com/DGBBue2i

Is there anything blatantly wrong here? Any input is much appreciated!

--


(banderon1) #7

I figured it out! The problem was that my analyzer was not being mapped to
my index. Once I added that, the synonyms are working :slight_smile:

On Wed, Sep 26, 2012 at 10:11 AM, banderon1 banderon1@gmail.com wrote:

Thanks Otis for introducing me to the skywalker plugin, this is very
helpful. However, I am not seeing the synonyms in my index. Here is the
curl request I am using to create my index:

curl -XPUT 'http://localhost:9200/netplenish/' -d '{

"settings" : {

"index" : {

  "analysis" : {

    "analyzer" : {

      "synonym" : {

        "tokenizer" : "whitespace",

        "filter" : ["synonym"]

      }

    },

    "filter" : {

      "synonym" : {

        "type" : "synonym",

        "synonyms" : ["embroidery, embriodery"]

      }

    }

  }

}

}

}'

And here is the output I get from skywalker (curl -XGET
'localhost:9200/netplenish/_skywalker')

http://pastebin.com/DGBBue2i

Is there anything blatantly wrong here? Any input is much appreciated!

--

--


(system) #8