Closed Bug 986589 Opened 10 years ago Closed 10 years ago

switch to simple_query_string for search specifications

Categories

(Input Graveyard :: Dashboard, defect, P1)

defect

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: willkg, Assigned: willkg)

References

Details

(Whiteboard: u=analyzer c=search p=1 s=input.2014q2)

Right the search box handles a very very simple query language that allows people to do AND, OR and phrases (I think that's it--it's something like that). This is ok, but not great--there's a lot more we could be doing.

The Elasticsearch query_string query sucked because it would throw a Java exception for any malformed query. It was impossible to take that exception and turn it into something helpful to the user. It was kind of a UX nightmare. So I couldn't use it.

We're about to update the cluster to Elasticsearch 0.90.10 (I think it's that version).

This bug covers looking into whether we can switch from my simple parser to simple_query_string with the updated cluster:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/0.90/query-dsl-simple-query-string-query.html

If we can, then we can convert this bug into a "implement it!" bug.
Putting this in 2014q2 to look into.

Switching to simple_query_string query would make it a lot easier to build a query builder like this:

http://apptree.net/images/MPSearchSS_lg.png
Whiteboard: u=analyzer c=search p= s=input.2014q2
Matt also suggests this image for the query builder:

http://core0.staticworld.net/images/article/2013/05/smart-playlist3-new-100036189-large.png

(Note, building the query builder is outside the scope of this bug--we should spin that off into a new bug.)
Making this a P1. Definitely want to look into this. Very probably want to implement it.
Priority: -- → P1
This is easy to do, but the syntax it uses is different than the query parser I wrote a while back. For example:

query parser:        foo AND bar OR baz
simple query string: foo + bar | baz

Looks like the existing query parser supports most of the things that simple query string in Elasticsearch 0.90 supports. Here's a table comparing my query parser with Elasticsearch simple query string (sqs) in 0.90 and 1.0:

             query parser   sqs (0.90)   sqs (1.0+)
             ------------   ----------   ----------
AND          yes            yes          yes
OR           yes            yes          yes
PHRASE       yes            yes          yes
PRECEDENCE   yes            yes          yes
NEGATION                    yes          yes
PREFIX                      yes          yes
FUZZINESS                                yes
SLOP                                     yes


So, switching is easy (I've written the code already), but we need to add documentation to that page covering the syntax.

One thing I want to clarify is that I want to use this *only* on the analyzer search page for now--I don't want to change the front page dashboard search box.

Does this sound useful and worth doing? We can always push it off.
Whiteboard: u=analyzer c=search p= s=input.2014q2 → u=analyzer c=search p=1 s=input.2014q2
Re: comment #4, I'm going to do this for both the front page dashboard and the analyzer search. Sounds like no one knows we were parsing queries on the front page, so this shouldn't affect anyone. Plus bug #1007831 covers adding help text so we'll be in a better spot anyhow.
Landed in master: https://github.com/mozilla/fjord/commit/cc9d94d

I'll push this on Monday.
Assignee: nobody → willkg
Pushed to prod just now.
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Product: Input → Input Graveyard
You need to log in before you can comment on or make changes to this bug.