【问题标题】:Lucene 3.6 + Problems with searching for terms with apostropheLucene 3.6 + 搜索带有撇号的术语的问题
【发布时间】:2017-09-05 20:56:05
【问题描述】:

我们在代码中使用 Lucene v3.6。我们首先对数据进行索引,然后也使用 Lucene 搜索来搜索术语。使用 Luke 我已经确认,当我们为 Hashimoto's 之类的术语编制索引时,它会使用我假设的撇号进行索引(因为当我从获得的结果中搜索 Hashimoto 时,我可以确认相应的字段值包含 Hashimoto's 的撇号。但是,当我搜索桥本的(甚至在卢克)时,我没有得到该领域的任何结果。例如

+names.name:hashimoto (works and returns multiple results some which have Hashimoto's as a term)
+names.name:hashimoto's (does not work - no results)

在这两种情况下,我都使用 StandardAnalyzer,据我了解,它应该可以毫无问题地处理撇号。

【问题讨论】:

    标签: search indexing lucene


    【解决方案1】:

    您使用的查询似乎没有被分析。通常,查询时分析由 QueryParser 处理。如果您不使用其中一个,则不会分析您的查询。如果您手动构建查询(例如TermQuery),则假定您自己处理了任何与分析相关的问题,因此将按原样搜索该术语。

    【讨论】:

    • 在我的代码中,我使用的是 StandardAnalyzer。我使用 tokenStream 方法从 StandardAnalyzer 取回令牌并使用它们来构建查询。从一些研究,例如stackoverflow.com/questions/1190699/… 我知道应该使用 StandardAnalyzer 本地支持撇号。然而似乎并非如此。正如我所提到的,在使用 Luke 搜索我的索引并选择 StandardAnalyzer 的情况下也没有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多