Lucene.Net搜索引擎怎么优化搜索速度

ha283 2010-06-07 09:49:06
各位大虾,Lucene.Net搜索引擎,假如有100万条数据的索引。那么在搜索的时候,怎么优化搜索速度。另外该怎么分页?有好点的分词吗?能分中文,日文,韩文。有的话,请发我邮箱:huangan283@gmail.com 。谢谢啦。。
...全文
147 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
chencankun 2011-10-19
  • 打赏
  • 举报
回复
ha283 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zhuxiaojun2002 的回复:]
IndexItem是我自定义的一个类。包含总页数PageNum ,记录总数RecordNum ,和当前页的所有记录。

for (int i = PageSize * (PageIndex - 1); i < Num; i++)
{
Document doc;
doc = hits_common.Doc(i);
//doc.Get("id");你可以在这里得到搜索的……
[/Quote]

嗯。谢谢啦。你说的意思。我全明白了。 我的版本是Lucene.Net 2.3.1。 我先去试试。
zhuxiaojun2002 2010-06-07
  • 打赏
  • 举报
回复
IndexItem是我自定义的一个类。包含总页数PageNum ,记录总数RecordNum ,和当前页的所有记录。

for (int i = PageSize * (PageIndex - 1); i < Num; i++)
{
Document doc;
doc = hits_common.Doc(i);
//doc.Get("id");你可以在这里得到搜索的结果
}


hits_common你应该知道啊,就是我的搜索结果。
IndexSearcher searcher_common = new IndexSearcher(IndexDir);
Hits hits_common;
BooleanQuery bool_query = new BooleanQuery();

TermQuery tq_type_common = new TermQuery(new Term("WebsiteID", WebsiteID.ToString()));
bool_query.Add(tq_type_common, BooleanClause.Occur.MUST);

string sKeyword = CustomFilter(Splits(Keyword));
QueryParser parser = new QueryParser("itext", new WhitespaceAnalyzer());
Query query_common = parser.Parse(sKeyword);
bool_query.Add(query_common, BooleanClause.Occur.MUST);

hits_common = searcher_common.Search(bool_query);

我用的是早期的lucene。现在的可能不能用了,大体相同。
ha283 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhuxiaojun2002 的回复:]
我以前是这样做的,
搜索还是全搜(很快)。取的时候只取当前行的doc
int len_common = hits_common.Length();
_indexItem.RecordNum = len_common;
_indexItem.PageNum = (_indexItem.RecordNum / PageSize) + ((_indexItem.RecordNum % PageS……
[/Quote]

对了,这位朋友。我是个新手,请教一下hits_common,_indexItem分别是什么?把他们的定义和注释贴出来好吗?这样做会不会影响他们的权重?
ha283 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ha283 的回复:]
引用 1 楼 wangkun9999 的回复:
分索引,分页


这个我也想过,但是我不晓得该怎么去分索引分页啊?能具体点嘛?附加上代码更好啦。。我还是个初学者
[/Quote]


对了,这位朋友。我是个新手,请教一下hits_common,_indexItem分别是什么?把他们的定义和注释贴出来好吗?这样做会不会影响他们的权重?
zhuxiaojun2002 2010-06-07
  • 打赏
  • 举报
回复
说错了,取的时候只取当前页的所有行的doc
jiangjianjun1688 2010-06-07
  • 打赏
  • 举报
回复
关注!
zhuxiaojun2002 2010-06-07
  • 打赏
  • 举报
回复
我以前是这样做的,
搜索还是全搜(很快)。取的时候只取当前行的doc
int len_common = hits_common.Length();
_indexItem.RecordNum = len_common;
_indexItem.PageNum = (_indexItem.RecordNum / PageSize) + ((_indexItem.RecordNum % PageSize == 0) ? 0 : 1);
int Num = PageSize * PageIndex;
if (Num > _indexItem.RecordNum)
Num = _indexItem.RecordNum;
Document doc;
for (int i = PageSize * (PageIndex - 1); i < Num; i++)
{
doc = hits_common.Doc(i);
//doc.Get("id")
}
ha283 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wangkun9999 的回复:]
分索引,分页
[/Quote]

这个我也想过,但是我不晓得该怎么去分索引分页啊?能具体点嘛?附加上代码更好啦。。我还是个初学者
wangkun9999 2010-06-07
  • 打赏
  • 举报
回复
分索引,分页

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧