2017-07-29 50 views
0

我的指標有以下數據:爲什麼我的查詢不能找到結果,這是完全匹配還是包含?

doc.add(new StringField("domain", "examplehouse.com", Field.Store.YES) 
doc.add(new StringField("domain", "exampletree.com", Field.Store.YES) 
doc.add(new StringField("domain", "exampleapple.com", Field.Store.YES) 

現在我想用它的術語「示例」返回所有領域:

bq = new BooleanQuery().Builder.add(new TermQuery(new Term("domain", "example"))) 

indexSearcher.search(bq, 100) 

,當我把它打印出來的查詢是這樣的:

+domain:example 

這是正確的查詢類型還是完全匹配?

回答

1

TermQueries總是完全匹配。在你的情況下,像PrefixQuery通配符基於查詢會更有意義:https://lucene.apache.org/core/6_6_0/core/org/apache/lucene/search/PrefixQuery.html

有多個通配符類型,你應該理解這種護理:

  • 前綴(多結束通配符):examp *
  • 單尾通配符:例如?
  • 輯陣領導通配符:*充足
  • 單一主導通配符:?xample

老了,但仍然有效鏈接Lucene的文檔expaining查詢語法: https://lucene.apache.org/core/2_9_4/queryparsersyntax.html

相關問題