[問題] Lucene製作搜尋引擎"中文分詞"查詢問題?

看板Programming作者 (想重回校園的工程師)時間15年前 (2010/09/08 14:46), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ [本文轉錄自 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
文章代碼(AID): #1CXp5NR4 (Programming)
文章代碼(AID): #1CXp5NR4 (Programming)