作者chengreg (想重回校园的工程师)
看板Programming
标题[问题] Lucene制作搜寻引擎"中文分词"查询问题?
时间Wed Sep 8 14:46:45 2010
※ [本文转录自 C_and_CPP 看板 #1CXp2jyB ]
作者: chengreg (想重回校园的工程师) 看板: C_and_CPP
标题: [问题] Lucene制作搜寻引擎"中文分词"查询问题?
时间: Wed Sep 8 14:43:55 2010
小弟请教各位有经验的前辈:
小弟目前利用Lucene.Net制作相关之搜寻引擎
由於目前的搜寻引擎大多着重於速度方面,有关资料的精确度
只要再容许范围内即可.
但是小弟设计的搜寻精确度需求极高,所以之前用了Lucene
所提供的 Analyzer (StandardAnalyzer)
这是Lucene所提供之标准"断字"的分析器
虽然可以很准确的查到资料,但是当超过500万笔全文资料
速度必然相当慢...T_T
为了提升查询的速度,不可避免的使用的中文的分词器
小弟参考了部分中文分词器的SourceCode并自己改写成自己的Analyzer
查询速度果然大幅度提升,500万笔搜寻出10万笔资料可以少於1秒
看到这速度固然高兴,但进入精确测试阶段却发现了一个问题
问题如下:
[原文] : 权利证明书
[搜寻条件] : 权利证明
很抱歉~这样无法Hits到这篇原文!!!!????
OK~来分析一下一开始将这原文建立成index时Analyzer怎麽纪录的
[原文] :
0-1 权利
2-4 证明书
2-3 证明
[搜寻条件] :
0-1 权利
2-3 证明
如此Lucene在Search时无法比对到这篇文章
小弟目前猜测:
搜寻条件断出来的词,一定要符合原文断出来的词才可以命中,
但是为何StartOffset - EndOffset 中 :
[0-1权利 2-3] 证明 却无法Hits [0-1 权利 2-4 证明书 2-3 证明] ??
是否在Lucene.net 中的QueryParse里面有所其他设定或者其他分法来Search呢??
(基本上几乎把Lucene.Net DOC找翻了,脑袋还是无法解释这问题T__T)
恳请各位前辈给予指导~小弟苦恼了好久 T___T
再度谢谢各位前辈!!!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.43.114.23
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.43.114.23