2017-04-10 34 views
0

我们在我们的代码中使用Lucene v3.6。我们首先对数据进行索引,然后使用Lucene搜索来搜索术语。使用卢克我已经证实,当我们对像桥本这样的词汇进行索引时,它会被索引到我假设的撇号中(因为当我从获得的结果中搜索桥本时,我可以确认相应的字段值包含了作为桥本的撇号,当我搜索桥本氏(甚至在卢克)我不回来了场任何结果。例如Lucene 3.6 +用撇号搜索术语的问题

+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它从我的理解应该处理没有撇号问题

回答

0

看起来您正在使用的是未被分析的查询通常,查询时间分析由QueryParser处理如果您没有使用查询,您的查询将不会是nalyzed。如果您手动构建查询(例如,TermQuery),则假定您已经处理了与分析有关的所有问题,因此该术语将按原样进行搜索。

+0

在我的代码中,我使用了StandardAnalyzer。我使用tokenStream方法从StandardAnalyzer获取标记并使用它们构建查询。从一些研究,例如http://stackoverflow.com/questions/1190699/storing-words-with-apostrophe-in-lucene-index我明白应该使用StandardAnalyzer原生支持撇号。但似乎并非如此。正如我所提到的,在使用Luke搜索我的索引以及选择StandardAnalyzer的情况下,这也没有帮助。 – user1111871