如何包括在嗖查询撇号(')?

问题描述 投票:1回答:1

我怎么能包括在嗖查询撇号(')?例如(这是):

tws_fileName.tws_query_index( 'that's' )

因为上面提到的查询不工作,也不做以下

tws_fileName.tws_query_index( "that's" )
python python-3.x whoosh
1个回答
1
投票

因为所有的标点是从由RegexTokenizer.StandardAnalyzer"that's all, folks!"索引剥离被索引为[that,s,all,folks]你不能在默认情况下做到这一点

您可以通过两种规避这样的:

  1. 使用KEYWORD代替TEXT领域,因为它不使用RegexTokenizer,但你不能做一个关键字短语现场搜索。
  2. 使用TEXT场与StandardAnalyzer和一个自定义RegexTokenizer正则表达式。在下面的例子中,经修饰的正则表达式接受撇号为令牌的有效部分。
    from whoosh import fields, analysis

    myanalyzer = analysis.StandardAnalyzer(expression=r'[\w\']+(\.?\w+)*')
    schema = fields.Schema(myfield=fields.TEXT(analyzer=myanalyzer))

myfield任何撇号现在将令牌保留:[that's, all, folks]。如果您在提交查询作为"that's"'that\'s',你会得到一个匹配。但是,因为没有这样的令牌"that"搜索将不再能够找到这份文件。

© www.soinside.com 2019 - 2024. All rights reserved.