QueryParser Rules | Java.net



QueryParser Rules | Java.net

Using QueryParser

Using QueryParser is quite straightforward. Three things are needed: an expression, the default field name to use for unqualified fields in the expression, and an analyzer to pieces of the expression.
Query query = QueryParser.parse(humanQuery, "contents", new StandardAnalyzer());
When a human-readable query is parsed by Lucene's QueryParser, it is converted to a single concrete subclass of the Query class.

Some interesting features of the Query classes are their toString methods. Each Query subclass generates the equivalent (though not necessarily textually exact) QueryParserexpression. There are two variants: one is the standard Object.toString overridden method, and the other accepts the default field name.

    Query query = QueryParser.parse("java AND net NOT dot", "contents", new StandardAnalyzer());

    assertEquals("+java +net -dot", query.toString("contents"));

    assertEquals("+contents:java +contents:net -contents:dot", query.toString());
Beyond constructing the different query types, other syntax is needed to group expressions, select a field, or escape characters.
 QueryParser cannot create every type of query that can be constructed using the API. For instance, a PhrasePrefixQuery cannot be constructed. You must keep in mind that all of the possibilities available when exposing freeform query parsing to an end user. Some queries have the potential for performance bottlenecks. The syntax used by the built-in QueryParser may not be suitable for your needs. Some control is possible with subclassing QueryParser, though it is still limited.
Creating a custom query parser is well within reach. Look to JavaCC or other parser technologies, such as ANTLR, for creating your own, should QueryParser be insufficient
Read full article from QueryParser Rules | Java.net

No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts