在Lucene中如何索引文本文件的单词位置
我是lucene环境和使用方面的新手 1-Indexer.java类用于索引原始数据,以便我们可以使用lucene库进行搜索 2-LuceneConstants.java类用于提供在示例应用程序中使用的各种常量 3-Searcher.java类用于搜索Indexer创建的索引,以搜索请求的内容 4-TextFileFilter.java类用作.txt文件过滤器 5-LuceNet.java lass用于测试lucene库的索引和搜索能力 现在,我尝试在Indexer.java中为单词位置(TermVectorPosition)字段编制索引,并通过luceNet.java中的查询检索它。任何一个help me在Lucene中如何索引文本文件的单词位置,lucene,lucene.net,zend-search-lucene,Lucene,Lucene.net,Zend Search Lucene,我是lucene环境和使用方面的新手 1-Indexer.java类用于索引原始数据,以便我们可以使用lucene库进行搜索 2-LuceneConstants.java类用于提供在示例应用程序中使用的各种常量 3-Searcher.java类用于搜索Indexer创建的索引,以搜索请求的内容 4-TextFileFilter.java类用作.txt文件过滤器 5-LuceNet.java lass用于测试lucene库的索引和搜索能力 现在,我尝试在Indexer.java中为单词位置(Ter
public void doSearch(字符串querystr)抛出IOException,ParseException{
public void doSearch(String querystr) throws IOException, ParseException {
StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);
Directory index = FSDirectory.open(new File(indexDir));
// 2. query
Query q = new QueryParser(Version.LUCENE_36, LuceneConstants.Term_Vector_Position, analyzer).parse(querystr);
// 3. search
int hitsPerPage = 10;
IndexSearcher searcher = new IndexSearcher(index, true);
IndexReader reader = IndexReader.open(index, true);
searcher.setDefaultFieldSortScoring(true, true);
TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage, true);
searcher.search(q, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;
// 4. display term positions, and term indexes
System.out.println("Found " + hits.length + " hits.");
// System.out.println("Found " + hits.clone().length+ " hits.");
for(int i=0;i<hits.clone().length;++i) {
int docId = hits[i].doc;
System.out.println("docId:" + docId);
TermFreqVector tfvector = reader.getTermFreqVector(docId, "TVP");
TermPositionVector tpvector = (TermPositionVector)tfvector;
System.out.println("tfvector " + tfvector + " tpvector" + tpvector);
int termidx = tfvector.indexOf(querystr);
System.out.println("termidx " + termidx );
int[] termposx = tpvector.getTermPositions(termidx);
//System.out.println("termposx " + termposx.length);
TermVectorOffsetInfo[] tvoffsetinfo = tpvector.getOffsets(termidx);
for (int j=0;j<termposx.length;j++) {
System.out.println("termpos at j :"+j + ": " +termposx[j]);
}
System.out.println("tvoffsetinfo " + tvoffsetinfo.length);
for (int j=0;j<tvoffsetinfo.length;j++) {
int offsetStart = tvoffsetinfo[j].getStartOffset();
int offsetEnd = tvoffsetinfo[j].getEndOffset();
System.out.println("offsets : "+offsetStart+" "+offsetEnd);
}
Document d = searcher.doc(docId);
System.out.println((i + 1) + ". " + d.get("filepath"));
}
// searcher can only be closed when there
// is no need to access the do***ents any more.
searcher.close();
StandardAnalyzer=新的StandardAnalyzer(版本.LUCENE_36);
目录索引=FSDirectory.open(新文件(indexDir));
//2.查询
Query q=new QueryParser(Version.LUCENE_36,LuceneConstants.Term_Vector_Position,analyzer).parse(querystr);
//3.搜索
int hitsPerPage=10;
IndexSearcher search=新的IndexSearcher(索引,true);
IndexReader=IndexReader.open(index,true);
searcher.setDefaultFieldSortCoring(true,true);
TopScoreDocCollector=TopScoreDocCollector.create(hitsPerPage,true);
搜索者。搜索(q,收集器);
ScoreDoc[]hits=collector.topDocs().scoreDocs;
//4.显示术语位置和术语索引
System.out.println(“Found”+hits.length+“hits.”);
//System.out.println(“find”+hits.clone().length+hits.”);
对于(inti=0;iBy默认情况下,它为位置编制索引。搜索实现自定义突出显示,它将引导您找到单词位置。