大家好,我最近在研究lucene,有一个问题,关于lucene关键字统计的问题,我想知道关键字在一个网页,一个文件,或者是数据库中字段属性里面出现的次数。根据统计,次数越多的的越靠前。进行分页。我在网上查了一些,但是没有这方面的资料。
同时有谁对lucene的文件的读取有问题的可以问我,我们共同学习。
同时有谁对lucene的文件的读取有问题的可以问我,我们共同学习。
解决方案 »
- 软件项目基本完成,寻求后期帮助
- JSP代码转JSTL
- 那里能找到JSTL的例子
- 帮个忙,谁用oracle数据库的,帮忙看下服务里那些有关Oracle项是打开了的 谢谢。
- jsp链接乱码问题
- 求助:jsp登陆出现错误,源码和错误如下,请指点.OK马上给分.多谢
- 高分相送(百万火急请教)
- 本人开发用jsp开发网站用于商业用途,请问用什么服务器比较好,大家给点建议
- 有什么著名的软件是用JAVA编的?
- ibatis报错 org.springframework.jdbc.UncategorizedSQLException: SqlMapClient
- Web应用中static类型的字段的作用域
- 如何为所有input 节点添加 onclick="abc();" 这样的属性呢?
原理是 使用分组的列 来排序 然后统计个数 Query query = prequery(type, q);
int sortname = 0;
sortname = (int)(type.Replace("-", "").Length / 2); //排序 此处只能用一列排序
Sort st = new Sort();
SortField[] sf = new SortField[] {
new SortField("type"+sortname.ToString(),SortField.INT)
};
st.SetSort(sf);
log("type" + sortname.ToString());
DateTime start = DateTime.Now;
DateTime end;
//IndexSearcher _is = new IndexSearcher(path); //StringBuilder sb = new StringBuilder();
//使用上次之缓存
CachingWrapperFilter filter = new CachingWrapperFilter(new QueryFilter(query)); Dictionary<string, int> dc = new Dictionary<string, int>();
//TopFieldDocs docs = _is.Search(query, null, 100000, st);
TopFieldDocs docs = _is.Search(query, filter, 100000, st); end = DateTime.Now;
log("1 查出耗时 " + ((TimeSpan)(end - start)).TotalMilliseconds.ToString() + " ms !\r\n");
//docs.scoreDocs数组对应查出的文档,仅包括排序字段的值
for (int i = 0; i < docs.scoreDocs.Length; i++)
{
FieldDoc fieldDoc = (FieldDoc)docs.scoreDocs[i];
//fieldDoc.fields数组对应每个排序字段
for (int j = 0; j < fieldDoc.fields.Length; j++)
{
String sortValue = fieldDoc.fields[j].ToString(); if (dc.ContainsKey(sortValue))
dc[sortValue] += 1;
else
dc[sortValue] = 1;
} }
end = DateTime.Now;
log("2 遍历统计耗时 " + ((TimeSpan)(end - start)).TotalMilliseconds.ToString() + " ms !\r\n");
DataTable d = new DataTable(); if (dc.Count > 0)
{ List<string> tp = new List<string>();
foreach (string k in dc.Keys)
{
if (k.Trim() != "")
tp.Add("'" + numAddGang(k) + "'");
} //replace(type,'-','')
com.CommandText = "select name,type from mytype where type in (" + string.Join(",", tp.ToArray()) + ")";
log(com.CommandText); //Utilities.die(com.CommandText);
d = GenericDataAccess.ExecuteSelectCommand(com); d.Columns.Add("num", typeof(int)); foreach (DataRow dr in d.Rows)
{
if (dc.ContainsKey(dr["type"].ToString().Replace("-", "")))
dr["num"] = dc[dr["type"].ToString().Replace("-", "")];
} d.DefaultView.Sort = "num desc";
d = d.DefaultView.ToTable(); }
return d;
J2EE开发高级群:71929019
赶明我有空了 写个简单实用的