想請問:我使用ChineseAnalyzer for Whoosh 搜索引擎,當writer.add_document裡面的content字不多的時候,設定的keyword會跟content完全符合才會被列出來; 但當content字多到一定程度的時候(我用bog文章),content的字只要有部分和keyword一樣就會被列出來。不知道該怎麼處理? 是預設的模式有變化嗎? 看了Whoosh說明文件也不太懂,謝謝。
798qvoo81#
简单改下:class ChineseTokenizer(Tokenizer):
应该就可以实现。if len(context) < MIN_CONTEXT:token = Token()token.text = contexttoken.pos = 0...yield tokenelse:words = jieba.tokenize(text, mode="search")token = Token()for (w,start_pos,stop_pos) in words:if not accepted_chars.match(w) and len(w)<=1:continuetoken.original = token.text = wtoken.pos = start_postoken.startchar = start_postoken.endchar = stop_posyield token
r3i60tvu2#
想到可以沿用原來的程式,最後面把print hit.highlights("content")的結果中"<.....>XXX"的XXX抓出來和keyword比對,如果一樣就是真的一樣。只是這樣就跟原來ChineseAnalyzer的效果不大一樣??
2条答案
按热度按时间798qvoo81#
简单改下:
class ChineseTokenizer(Tokenizer):
应该就可以实现。
if len(context) < MIN_CONTEXT:
token = Token()
token.text = context
token.pos = 0
...
yield token
else:
words = jieba.tokenize(text, mode="search")
token = Token()
for (w,start_pos,stop_pos) in words:
if not accepted_chars.match(w) and len(w)<=1:
continue
token.original = token.text = w
token.pos = start_pos
token.startchar = start_pos
token.endchar = stop_pos
yield token
r3i60tvu2#
想到可以沿用原來的程式,最後面把print hit.highlights("content")的結果中"<.....>XXX"的XXX抓出來和keyword比對,如果一樣就是真的一樣。只是這樣就跟原來ChineseAnalyzer的效果不大一樣??