[問題] Lucene製作搜尋引擎"中文分詞"查詢問題?
※ [本文轉錄自 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
Programming 近期熱門文章
PTT數位生活區 即時熱門文章