簡體   English   中英

如何在lucene 4.10中搜索全文

[英]How to search full text in lucene 4.10

我想在pdf中搜索文本階段,如“勞動法”。 但結果是,它返回包含單詞“Labor”和“Law”的所有文件。 請幫助檢查下面的鱈魚:

EnglishAnalyzer analyzer = new EnglishAnalyzer();
analyzer.setVersion(Version.LATEST);          

QueryParser parser = new QueryParser("content", analyzer);
Query query = parser.parse("Labor Law");

Directory indexDirectory = FSDirectory.open(new File(indexLucencePath));
DirectoryReader dirReader = DirectoryReader.open(indexDirectory);
indexSearcher = new IndexSearcher(dirReader);

ScoreDoc[] queryResults = indexSearcher.search(query, numOfResults).scoreDocs;

List<IndexItem> results = new ArrayList<IndexItem>();
for (ScoreDoc scoreDoc : queryResults) {
    Document doc = indexSearcher.doc(scoreDoc.doc);
    results.add(new IndexItem(doc.get(IndexItem.TITLE), doc.get(IndexItem.CONTENT)));
  }

嘗試

短語查詢:

Query query = parser.parse("\"Labor Law\"");

所有條款必須存在

Query query = parser.parse("+Labor +Law");

您也可以像這樣自己創建查詢

BooleanQuery query= new BooleanQuery();
TermQuery clause1 = new TermQuery(new Term("content", "Labor"));
TermQuery clause2 = new TermQuery(new Term("content", "Law"));
query.add(new BooleanClause(clause1, BooleanClause.Occur.MUST));
query.add(new BooleanClause(clause1, BooleanClause.Occur.MUST));

有不同類型的分析儀可供選擇,請根據您的要求與不同的分析儀聯系。 Lucene分析儀的比較 這也可以幫助Lucene:多詞短語作為搜索詞

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM