用lucene建立全文检索,要求中文分词

我现在做的是个网站的全文检索,项目下有很多html,html里面存放很多文章,请问我在建立索引的时候,应该怎么建立,是把内容和路径都建立上吗,然后到存的时候把录取取出来,... 我现在做的是个网站的全文检索,项目下有很多html,html里面存放很多文章,请问我在建立索引的时候,应该怎么建立,是把内容和路径都建立上吗,然后到存的时候把录取取出来,然后再用stream读这个文件吗,本人刚学,不太明白,然后如何将检索的内容高亮显示出来呢,急,求助,各位大虾,要求效果就想是论坛搜索那样。另中文分词,请问哪个好? 展开
 我来答
了幻想
2011-04-27
知道答主
回答量:12
采纳率:0%
帮助的人:12.5万
展开全部
索引的话,推荐使用lucene,我最近的项目就是用这个,蛮好用。
不管你是否使用数据库,你都应该将html页面解析成标准的XML的页面,这样方便进行下一步操作。如果你只需要html的文章内容的话,还是比较简单的。分别对html文章内容和html地址建索引,那样你文章命中了搜索关键字的话,可以把html地址也拿出来,例 Field field1 = new Field("address",address,Field.Store.YES, Field.Index.TOKENIZED);
Field field1_1 = new Field("content",content,Store.YES,Index.UN_TOKENIZED);
doc1.add(field1);
doc1.add(field1_1);
再具体点的内容,去下一个lucene的API文档,把field,document,indexwriter,indexsearcher,这几个类看一下,还是比较好懂的。
分词器的建议使用,IKAnalyzer,在开源中文分词器里算是很好的,而且一直在稳定的更新版本。
百度网友32761b0
2011-05-04
知道答主
回答量:11
采纳率:0%
帮助的人:10.4万
展开全部
建两个Field吧,把内容和路径都建索引,内容分词,路径不分词。在内容的Field中用Field.store.yes。内容就被存储了,搜索时用就可以读取了(如 Document doc=hits.doc(i); string str=doc.get("内容") ;"内容" 为我建Field时用的),至于分词如果你用的是Lucene.Net,我建议您使用盘古(PanGu)分词,它里面有带高亮显示组件,非常容易实现。示例代码如下
public string highlight(string keyword,Document doc)
{
string result;
PanGu.HighLight.SimpleHTMLFormatter tmp = new PanGu.HighLight.SimpleHTMLFormatter("<font color=\"red\">", "</font>");
PanGu.HighLight.Highlighter hightlighter = new PanGu.HighLight.Highlighter(tmp ,new Segment ());
hightlighter.FragmentSize = 100;
result = hightlighter.GetBestFragment(keyword ,doc.Get ("body"));
return result;

}
盘古分词官网:http://pangusegment.codeplex.com/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式