加了中文分词后, 就查询不到任何东东了,我用Luke工具查询了索引文件,
发现索引完全正常,而且用Luke的Search可以做查询,结果也正常。真是不
知如何是好了?
1) 索引部份代码:
WordSegV1 word = new WordSegV1();
try
{
doc.Add(Field.UnStored("text", word.Segment(parseHtml(html),' ')));
doc.Add(Field.Keyword("path", relativePath));
doc.Add(Field.Text("title", word.Segment(getTitle(html),' ')));
writer.AddDocument(doc);
}
catch{}
2) 查询部份代码:
WordSegV1 word = new WordSegV1();
Query query = QueryParser.Parse(word.Segment(this.Query,' '), "text", new WhitespaceAnalyzer());
this.Results.Columns.Add("title", typeof(string));
this.Results.Columns.Add("sample", typeof(string));
this.Results.Columns.Add("path", typeof(string));
Hits hits = searcher.Search(query);
分析器全部用了WhitespaceAnalyzer, 因为中文切词后,是用空格分割的。
不知哪儿出了问题,哪位大哥指点一下,谢谢!!!
-------------------
从你给的信息来看,看不出什么明显的错误。
检查两点吧,
1.luke看到的索引结构是按词索引的吗?你的分词程序有没有什么逻辑错误?
2.Query query = QueryParser.Parse(word.Segment(this.Query,' '), "text", new WhitespaceAnalyzer()); debug一下看看你的query是否构造正确。
-------------------
索引中的分词是成功的, 由标题部份可以看出来: 织布 口罩 购物 袋 西服 套 图
呵呵, 谢谢大哥的指点!
确实我再检查一下, Query部份是否有误.
-------------------
请教: Lucene中文索引的处理到底是切字还是切词? 谢谢!!!
我一直认为应当是切词索引,今天有为高手说是切字,害得我不知所措,到底哪个是对的呢?
如果不按词索引, 效率会不会下降很利害呢?
例如: 索引文件巨大, 查询速度变慢呢?
Lucene对于中文索引的处理是切字而不是切词。因此在添加索引的时候不需要WordSeg,
而是使用CnAnalysis或者CJKAnalysis.
-------------------
楼上的有两点误区:
1。分词比不分词,索引文件要小。
实际上,分词往往造成索引文件过于庞大,原因就在于,词比字这个范围可是大多了。而且处于不断的增长期,词典的大小是符合Heap's Law 分布的。
2。Lucene对于中文索引的处理是切字而不是切词
实际上,Lucene只是提供了一个建立索引和访问的API,并没有规定你怎么进行中文索引。只不过提供了默认的SimpleAnalyzer是按字切分。
所以,如果没有特别的需要,没必要进行分词,当然,分词可以做很多进一步的检索模型优化,只是对于一般的应用来说,分词的必要性不是特别大了。
-------------------
谢谢!!!
有道理, 但还是不服气, 试验后再和大哥讨论这个话题.
-------------------
可能是我表述有问题:
准确的表述是中文索引采用按字切分还是按词意切分更好?
如果按字切分, 查询时会不会查出一堆不相关的信息呢?
-------------------
QUOTE 以下是引用jsntcw在2005-5-24 18:16:00的发言: 可能是我表述有问题: 准确的表述是中文索引采用按字切分还是按词意切分更好? 如果按字切分, 查询时会不会查出一堆不相关的信息呢?[/QUOTE] 我上个回复已经提到过 所以,如果没有特别的需要,没必要进行分词,当然,分词可以做很多进一步的检索模型优化,只是对于一般的应用来说,分词的必要性不是特别大了。 即使分词,你也不能保证提高检索相关性。反而,因为分词的不准确,而带来的错误放大,可能反而带来检索效果的降低。 目前 ,暂时没有权威的研究结果,表明,分词能有效的提高检索模型的效率,如果我有误解,你可以指出哪篇文章提到过,我来看看他的实验数据。 而提升检索效果,可以通过多种retrieval utilities来实现,比如query expansion,document expansion,term reweighting,clustering,phrase searching ,summarization 等等了。 比如query expansion,可以带来的提升是明显的。 |