Jumat, 23 Desember 2016
Implementasi Leveninstein JAVA
package lp2maray.com;
public class Leveninstein {
public static int distance(String a, String b){
a = a.toLowerCase();
b = b.toLowerCase();
int[] costs = new int[b.length() + 1];
for (int j = 0; j < costs.length; j++)
costs[j] = j;
for (int i = 1; i <= a.length(); i++) {
costs[0] = i;
int nw = i - 1;
for (int j = 1; j <= b.length(); j++){
int cj = Math.min(1 + Math.min(costs[j], costs[j - 1]),a.charAt(i - 1) == b.charAt(j - 1) ? nw : nw + 1);
nw = costs[j];
costs[j] = cj;
}
}
return costs[b.length()];
}
}
==========
btnCari.setOnClickListener(new OnClickListener(){
public void onClick(View v){textlength = edCari.getText().length();
for (int i = 0; i < jd; i++) {
Element e = (Element) nl.item(i);
String l_nama=parser.getValue(e, KEY_nama);
String l_deskripsi=parser.getValue(e, KEY_deskripsi);
gabs=gabs+l_nama.toLowerCase()+" ";
}
text_sort.clear();
image_sort.clear();
String scari=edCari.getText().toString().toLowerCase();
//++++++++++++++++++++++++++++++++++
Leveninstein x=new Leveninstein();
String[]ar=new String[1000];
int r=0;
String text=gabs;//.toLowerCase();//gab=kalimat halo apa kabar all
String keyword=scari;
String[] data = text.split(" ");
List<Integer> dist = new ArrayList<Integer>();
for (int i = 0; i < data.length; i++){
dist.add(x.distance(data[i], keyword));
Log.v("COMP",i+":"+keyword+"="+x.distance(data[i],keyword));
}
Collections.sort(dist);
for (int i = 0; i < data.length; i++){
if (x.distance(data[i], keyword) == dist.get(0)){
if(text.indexOf(data[i])>=0){
ar[r]=data[i].toLowerCase();
Log.v("MAYBE", data[i] + " >> " + x.distance(data[i], keyword));
r++;
}
}
}//for
arrNama2=new String[1000];
arrDes2=new String[1000];
arrGbr2=new int[1000];
text_sort.clear();
image_sort.clear();
int ada=0;
for (int i = 0; i < arrNama.length; i++) {
String me = arrNama[i].toLowerCase();
for (int j = 0; j < r; j++) {
if (me.indexOf(ar[j]) >= 0 || me.indexOf(scari)>=0) {
arrNama2[ada]=arrNama[i];
arrDes2[ada]=arrDes[i];
arrGbr2[ada]=arrGbr[i];
Log.v("BC",arrNama2[ada]);
ada++;
break;
}
}
}
Log.v("III","=="+ada);
arrNama3=new String[ada];
arrDes3=new String[ada];
arrGbr3=new int[ada];
for (int i = 0; i < ada; i++){
arrNama3[i]=arrNama2[i];
Log.v("CC",arrNama3[i]);
arrDes3[i]=arrDes2[i];
arrGbr3[i]=arrGbr2[i];
}
listview.setAdapter(new MyCustomAdapter(arrNama3, arrGbr3));
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int p, long id) {
Intent i = new Intent(pencarian.this, detail.class);
i.putExtra("istilah", arrNama3[p]);
i.putExtra("deskripsi", arrDes3[p]);
startActivity(i);
Toast.makeText(pencarian.this,arrNama3[p]+ " ....", Toast.LENGTH_LONG).show();
}
});
}});
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar