2 Nisan 2018 Pazartesi

Lucene Query Sınıfları

BooleanClause Sınıfı
Giriş
Şu satırı dahil ederiz.
import org.apache.lucene.search.BooleanClause;
BooleanQuery Sınıfı
Giriş
Şu satırı dahil ederiz.
import org.apache.lucene.search.BooleanQuery;
Açıklaması şöyle.
You can construct powerful queries by combining any number of query objects using BooleanQuery. It uses query and a clause associated with a query that indicates if a query should occur, must occur, or must not occur. In a BooleanQuery, the maximum number of clauses is restricted to 1,024 by default. You can set the maximum classes by calling the setMaxClauseCount method.
constructor
Şöyle yaparız.
BooleanQuery booleanQuery = new BooleanQuery();
add metodu
Şöyle yaparız.
Query query = ...;
booleanQuery.add(query, BooleanClause.Occur.SHOULD));
FuzzyQuery Sınıfı
Giriş
Şu satırı dahil ederiz.
import org.apache.lucene.search.FuzzyQuery;
Açıklaması şöyle.
You can search for similar terms with FuzzyQuery, which matches words that are similar to your specified word. The similarity measurement is based on the Levenshtein (edit distance) algorithm. FuzzyQuery can be used to find a close match of a misspelled word "admnistrtor," though this word is not indexed.
cosntructor - Term + int
Benzerliği sayı ile belirtiriz. Açıklaması şöyle
Fuzzy difference between BlueCros and bluecross is 3

Örnek
Şöyle yaparız.
Directory directory = ...;
...
IndexReader reader = DirectoryReader.open(directory);
IndexSearcher searcher = new IndexSearcher(reader);

Query fuzzyQuery = new FuzzyQuery(new Term("content", "Company"), 2);

TopDocs results = searcher.search(fuzzyQuery, 5);
System.out.println("Hits: " + results.totalHits);
System.out.println("Max score:" + results.getMaxScore())
Örnek
Şöyle yaparız.
SpanQuery[] clauses = new SpanQuery[2];
clauses[0] = new SpanMultiTermQueryWrapper<FuzzyQuery>(new FuzzyQuery(
  new Term("content", "BlueCross"), 2));
clauses[1] = new SpanMultiTermQueryWrapper<FuzzyQuery>(new FuzzyQuery(
  new Term("content", "BlueShield"), 2));
SpanNearQuery query = new SpanNearQuery(clauses, 0, true);
Query Sınıfı
Şu satırı dahil ederiz.
import org.apache.lucene.search.Query;
QueryParser Sınıfı
Bu sınıf analyzer kullanır, bu yüzden büyük küçük harf farkından etkilenmez. Elde edilen Query nesnesi IndexSearcher'a verilir ve search() metodu çağrılır. Dönen sonuç TopDocs nesnesidir.
constructor
Şöyle yaparız
Analyzer analyzer = new EnglishAnalyzer();
//Note, both parent and child docs have a 'textContent' field
QueryParser queryParser = new QueryParser("textContent", analyzer);
parse metodu
Şöyle yaparız.
QueryParser queryParser = ...;
Query textQuery = queryParser.parse("foo bar");
TermQuery Sınıfı
Giriş
Şu satırı dahil ederiz.
import org.apache.lucene.search.TermQuery;
Açıklaması şöyle.
The most basic query type for searching an index. TermQuery can be constructed using a single term. The term value should be case-sensitive, but this is not entirely true. It is important to note that the terms passed for searching should be consistent with the terms produced by the analysis of documents, because analyzers perform many operations on the original text before building an index.
Bu sınıf analyzer kullanmadığı için büyük küçük harf araması farklı sonuçlar döndürebilir. QueryParser nesnesini kullanmak daha iyi olabilir.

Ayrıca bu sınıf tek kelimeleri aramak için daha iyi.

constructor
Örnek
Şöyle yaparız.
Query query = new TermQuery(new Term("fieldname", "This is the text to be indexed"));
Örnek
Şöyle yaparız.
String fieldName = ... String value = ...;
Term term = new Term(fieldName, value);
new TermQuery(term);
setBoost metodu
Şöyle yaparız.
TermQuery termQuery = new TermQuery(new Term("field", "value"));
termQuery.setBoost(2);

Hiç yorum yok:

Yorum Gönder