lucene_04_解析語法查詢

 

解析語法查詢就是調用方法查詢的原始查詢java

例如:apache

查詢全部的查詢器的語法爲:*:*,由於lucene查詢是根據term來作的,既是:key:value類型。*:*表示全部域中的全部值。api

 

api調用語法解析spa

pom.xml 必須引入(其他的參看lucene_02).code

 <dependency>
      <groupId>org.apache.lucene</groupId>
      <artifactId>lucene-queryparser</artifactId>
      <version>4.10.3</version>
</dependency>

 

  //初始化org.apache.lucene.queryparser.classic.QueryParser;
        //參數1:默認查詢的域
        //參數2:解析器
        QueryParser queryParser = new QueryParser("fileName", new IKAnalyzer());
//        Query query = queryParser.parse("*:*");
        Query query = queryParser.parse("apache");
        printResult(query);

 

區間查詢xml

語法爲: [0 TO 800}。TO左邊爲最小值,右邊爲最大值。「}」,「{」爲不包含,「[」,「]」爲包含。blog

組合語法應該爲:「域:[0 TO 800}」字符串

可是在lucene中不支持字符串的範圍查詢,因此只能使用 NumericRangeQuery.newLongRange。但在solr中就能使用字符串的語法查詢。io

 

組合條件查詢class

第一種寫法:
1) +條件1+條件2: 兩個條件之間是而且的關係and。

例如: +filename:apache +content:apaches
2) +條件1條件2: 必須知足第一個條件,應該知足第二個條件。

例如: +filename:apache content:apache.
3) 條件1條件2: 兩個條件知足其一便可。

例如: filename:apache content:apacher
4)-條件1條件2: 必須不知足條件1,要知足條件2。

例如:-filename:apache content:apaches。

示例:

 //初始化org.apache.lucene.queryparser.classic.QueryParser;
        //參數1:默認查詢的域
        //參數2:解析器
        QueryParser queryParser = new QueryParser("fileName", new IKAnalyzer());
//        Query query = queryParser.parse("*:*");
//        Query query = queryParser.parse("apache");
        Query query = queryParser.parse("+fileName:java  fileContent:coordination to your microservices");
        printResult(query);

 


Occur.MUST 查詢條件必須知足,至關於and (加號)。
Occur.SHOULD 查詢條件可選,至關於or空(不用符號)。
Occur.MUST_NOT 查詢條件不能知足,至關於not 非一(減號)。


第二種寫法:
條件1 AND 條件2

條件1 OR 條件2

條件1NOT 條件2.

示例:

等同於第一種方法

@Test
    public void testParseQuery() throws Exception {
        //初始化org.apache.lucene.queryparser.classic.QueryParser;
        //參數1:默認查詢的域
        //參數2:解析器
        QueryParser queryParser = new QueryParser("fileName", new IKAnalyzer());
//        Query query = queryParser.parse("*:*");
//        Query query = queryParser.parse("apache");
        Query query = queryParser.parse("fileName:java  OR fileContent:coordination to your microservices");
        printResult(query);
    }

多默認域:瞭解。

Query query = queryParser.parse("fileName:java  OR fileContent:coordination to your microservices");這種方式已經能夠替代。
  String[] fields = {"fileSize","fileContent"};
        MultiFieldQueryParser multiFieldQueryParser = new MultiFieldQueryParser(fields,new IKAnalyzer());
        Query query1 = multiFieldQueryParser.parse("java");
        printResult(query1);
相關文章
相關標籤/搜索