Posted at

Luceneクエリ

More than 3 years have passed since last update.


ドキュメントに入っているデータ(インデックス分割)

id
name
rank

1
AAA
C

2
BBB
C

3
CCC
A

4
AAAA
A

5
BBBB
B

6
CCCC
A

7
ABC
B

8
ABCD
B

9
zoo
B

10
soo
B


ワイルドカード


/* 全て */
name:*

/* 0 個以上の任意の文字 */
name:A*A // id=1(name=AAA), id=4(name=AAAA)

/* 1個の任意の文字 */
name:A?A // id=1(name=AAA)


論理演算子


/* AND */
name:A*A AND rank:A // id=4(name=AAAA, RANK=A)
name:A*A && rank:A // id=4(name=AAAA, RANK=A)

/* OR */
name:A*A OR rank:A // id=1, 3, 4, 6 (name=AAA, name=AAAA, rank=A)
name:A*A || rank:A // id=1, 3, 4, 6 (name=AAA, name=AAAA, rank=A)

/* NOT */
name:A*A AND NOT rank:A // id=1(name=AAA, RANK=C)
name:A*A AND !rank:A // id=1(name=AAA, RANK=C)

/* + */
name:A*A AND NOT rank:A // id=1(name=AAA, RANK=C)
name:"mike" AND -language:"eng"


範囲検索


rank:[3 TO 6] // rank=3以上、6以下
rank:{3 TO 6} // rank=3より大きい、6未満
rank:[3 TO 6} // rank=3以上、6未満
rank:[* TO 6] // rank=6以下
rank:[3 6] // rank=3または6


あいまい検索


name:zoo~0.5 // id=9(name=zoo), 10(name=soo)


重みづけ(キャレット)


rank:C^4 OR rank:A // rank=Aで一致したデータより、rank=Cがスコアが高くなる