android 和 lucene
16lz
2021-01-23
lucene可以放到android中使用吗?如果需要修改lucene源码,要怎么改呢?我用lucene写了一个放在android平板上的搜索器,可是不报错,但也不运行,这是怎么回事?有谁会改吗?package android.search;import java.io.File; import java.io.FileReader;import java.io.IOException;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.lucene.index.CorruptIndexException;import org.apache.lucene.index.IndexReader;import org.apache.lucene.index.IndexWriter;import org.apache.lucene.index.IndexWriterConfig;import org.apache.lucene.queryParser.ParseException;import org.apache.lucene.queryParser.QueryParser;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.search.Query;import org.apache.lucene.search.ScoreDoc;import org.apache.lucene.search.TopDocs;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;import org.apache.lucene.store.LockObtainFailedException;import org.apache.lucene.util.Version; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; // extends Activtiy //implements OnClickListener 实现click方法 public class AndroidsearchActivity extends Activity implements OnClickListener { /** Called when the activity is first created. */ private File file; //文件对象 private String path; //路径 private String info; //目标文件所在路径 private String key; //关键字 private TextView result; // 显示结果 private EditText et; // 编辑view private Button search_btn; // button view @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //创建程序 setContentView(R.layout.main); //导入main。xml result = (TextView)findViewById(R.id.TextView_Result); //结果 et = (EditText)findViewById(R.id.key); //关键词 search_btn = (Button)findViewById(R.id.button_search); // 按键 //file = new File(Environment.getExternalStorageDirectory().getPath()); // file = new File("/mnt/"); //确定搜索的路径 info = getString(R.string.info); //将String.xml中的“目标文件所在路径”这就话传给info search_btn.setOnClickListener(this);//设置监听 } /* (non-Javadoc) * @see android.view.View.OnClickListener#onClick(android.view.View) */ public void onClick(View v) { //点击按钮此程序运行 // TODO Auto-generated method stub StringBuffer sb = new StringBuffer(); path = ""; //path付初值为空 result.setText(""); //将结果显示设为空白 key = et.getText().toString(); //将从文本框中得到的文件名转换为String型 index(); //运行BrowserFile方法 search(sb); result.setText(sb); } public void index(){IndexWriter indexwriter = null;Directory directory;try {directory = FSDirectory.open(new File("/mnt/sdcard/kankan/"));//将索引创建在平板电脑的/mnt/sdcard/kankan/目录下IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_35,new StandardAnalyzer(Version.LUCENE_35));indexwriter = new IndexWriter(directory,iwc);Document document = null;File file = new File("/mnt/sdcard/kankan/");//确定搜索路径for(File files:file.listFiles()){document=new Document();document.add(new Field("content",new FileReader(file)));document.add(new Field("file",files.getName(),Field.Store.YES,Field.Index.ANALYZED));document.add(new Field("path",files.getPath(),Field.Store.YES,Field.Index.ANALYZED));if(indexwriter!=null)indexwriter.close();}} catch (IOException e2) {// TODO Auto-generated catch blocke2.printStackTrace();}}public StringBuffer search(StringBuffer sb){Directory directory;try {directory = FSDirectory.open(new File("/mnt/sdcard/kankan/"));//打开索引IndexReader indexreader;indexreader = IndexReader.open(directory);IndexSearcher indexsearcher = new IndexSearcher(indexreader);QueryParser queryparser = new QueryParser(Version.LUCENE_35,"content",new StandardAnalyzer(Version.LUCENE_35));Query query;query = queryparser.parse("ads");TopDocs tds;tds = indexsearcher.search(query, 20);ScoreDoc[] sds= tds.scoreDocs;for(ScoreDoc sd:sds){Document d;d = indexsearcher.doc(sd.doc);sb.append(d.get("filename")+"["+d.get("path")+"]");}indexreader.close();} catch (IOException e4) {// TODO Auto-generated catch blocke4.printStackTrace();} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}return sb;}}
更多相关文章
- Android文件系统的结构及目录用途、操作方法 整理
- Android NDK开发之Android.mk文件
- Android studio 3.1.4 无法获取pom文件
- Android Eclipse JNI 调用 .so文件加载
- Android 保存文件路径
- 在Windows系统中使用NDK编译Android二进制文件并运行
- FileProvider 路径配置策略的理解
- 【Android 系统开发】 编译 Android文件系统 u-boot 内核 并烧写
- android 获取路径目录方法以及判断目录是否存在,创建目录