我对使用json和搜索的android有点新手。
我想在我的autocompletetextview / edittext中应用高级搜索过滤器,在android中存储在assets文件夹中的json文件中。
json文件包含我的应用的常见问题解答。
现在我想像Google Chrome一样创建高级搜索过滤器,如果我输入类似
的内容STACK
我在网址栏中得到的预测是
STACK OVERFLOW
下一行
堆叠交换
等
哪里
堆
字突出显示,并提供适当的建议。
所以,同样地,我希望以这种方式进行搜索过滤,因为我的json文件中有一些常见问题解答,当用户输入类似的内容时,
如何制作纸张或制纸方法或想要制作 废纸或 ETC。
我希望你明白我的意思,现在从这里得到一些提示, 单词组成,制作,制作,所有这些都应该用于 MAKE ,这是所有人的根词。
因为我的常见问题解答有问题和相关答案(显然),所以问题可能是长格式的,所以要检索最佳类似的响应,我想创建高级搜索过滤器。
所以,我的问题是,
是否有任何特定的API或算法可以应用于实现 这个任务?
我已经研究了这个过去将近4-5天..
到目前为止我用于阅读json数据的内容如下:
public String loadJSONFromAsset() {
String json = null;
try {
InputStream is = getAssets().open("faq.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
return json;
}
然后,
try {
JSONObject jO = new JSONObject(loadJSONFromAsset());
JSONArray json = jO.getJSONArray("faq");
Log.v("faq", "faq");
for (int i = 0; i < json.length(); i++) {
final JSONObject e = json.getJSONObject(i);
q = e.getString("q");
responseList.add(q);
a = e.getString("a");
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
然后我设置了arrayadapter。
即使我使用自定义适配器,但现在不是问题。
所以,现在在我的搜索引擎中,当有人写一组关键字时,代码应该忽略文章,副词等。
预测的问题必须按相关性指数排序。
应该有同义词捕获和排序功能。
重视已识别的单词以优化相关的单词集。
可以添加分类词典。
所以,我想要这种类型的代码/引擎可以完成所需的任务。
即使用户点击空格键,也必须刷新排序。
是否有可以满足需求的API /库?
坦率地说,我尝试了很多自定义过滤器 解决方案和ALGOLIA API(非开源,已经试用了14天 只有..)和其他人,但这些都不足以解决我的问题 需要。
因此,我提前感谢您,如果您可以帮助我通过api或算法或代码或想法的合适解决方案来完成我的任务。
问候。
答案 0 :(得分:0)
LUCENE Apache API,移动版本,5.3.0是我的查询的解决方案,我终于得到了..
lucene搜索和lucene研究是不同的项目来处理..