1、跨度查詢spanquery5個子類
spanquery型別 描述
spantermquery 和其他跨度查詢結合使用,單獨使用相當於termquery
spanfirstquery 用來匹配域中的第乙個部分內的各個spans
spannearquery 用來匹配臨近的spans
spannotquery 用來匹配不重疊的spans
spanorquery span查詢的聚合匹配
2、測試spanquery
public class spanquerytest extends testcase
privatevoid assertonlybrownfox(query query) throw***ception{//檢查是否返回乙個匹配結果
hits hits=searcher.search(query);
assertequals(1,hits.length());
assertequals("wrong doc",0,hits.id(0));
privatevoid assertbothfoxes(query query) throw***ception{//檢查是否返回2個匹配結果
hits hits=searcher.search(query);
assertequals(2.hits.length());
privatevoid assertnotmatch(query query) throws exception{
hits hits=searcher.search(query);
assertequals(0,hits.length());
3、使用spantermquery類,它匹配文件的方式與termquery相似,但是它會記錄乙個文件中的相同項在文件中出現的不同位置。
spanquery物件一直跟蹤它所匹配的結果:對於每個正進行匹配的文件,它記錄下被匹配的查詢文字的所有起點和終點位置(以語彙單元為乙個位置)。
dumpspans(new spantermquery(newterm("f","the")));//查詢文字為the,帶the的所有文件,並顯示查詢細節
定義乙個方法dumpspans()呼叫spanquery的一些底層api為我們查詢細節。
public void dumpspans(spanquery query) throws ioexception{
spansspans=query.getspans(reader);
system.out.println(query+":");
intnumspans=0;
hit****s=searcher.search(query);
floatscores=new float[2];
for (inti0;iscores[hits.id(i)]=hits.score(i);
while(spans.next()){//spans裡是單個查詢文字匹配情況情況,記錄著query在文件中的位置,
//next表示query在文件中的下乙個位置,以及查詢文字所在的文件號
numspans++;
int id=spans.doc();
document doc=reader.document(id);
tokentokens=anaylzerutilts.tokensfromanalysis(analyzer,doc.get("f"));
stringbuffer buffer=new stringbuffer();
for (int i=0;iif (i==spans.start()){
if (i+1==spans.end()){
system.out.println(buffer);//輸出spans的查詢文字的在文件中本次出現的資訊。
if(numspans==0){
system.out.println(" no spans");//沒有任何匹配
system.out.println();
第1次spans.next迴圈所輸出:quickbrown fox jumps over the lazy dog(0.18123456)
第2次spans.next迴圈所輸出:the quick brown fox jumps overlazy dog(0.18123456)
第3次spans.next迴圈所輸出:quick redfox jumps over the sleep dog(0.18123456)
第4次spans.next迴圈所輸出:the quick red fox jumps oversleepdog(0.18123456)
lucene SpanQuery跨度查詢基礎
1 跨度查詢spanquery5個子類 spanquery型別描述 spantermquery和其他跨度查詢結合使用,單獨使用相當於termquery spanfirstquery用來匹配域中的第乙個部分內的各個spans spannearquery用來匹配臨近的spans spannotquery...
lucene跨度域查詢(一)
一 跨度域查詢 基類是 spanquery 子類 spantermquery 測試用的這個子類當然還有其他 二 測試 public class spantest public indexwriter writer directory dir throws ioexception public voi...
在MySQL中使用子查詢和標量子查詢的基本用法
一 mysql 子查詢 子查詢是將乙個 select 語句的查詢結果作為中間結果,供另乙個 sql 語句呼叫。mysql 支援 sql 標準要求的所有子查詢格式和操作,也擴充套件了特有的幾種特性。子查詢沒有固定的語法,乙個子查詢的例子如下 select from article where uid ...