在Lucene中搜索双字母单词

时间:2013-08-15 14:35:05

标签: lucene lucene.net

我正在尝试查找包含首字母缩略词“IT”的文档。

我尝试使用StandardAnalyzer,SimpleAnalyzer和KeywordAnalyzer进行搜索 - 结果相同(无任何命中)。

据我所知,“它”不是默认停用词的一部分吗?

可以使用通配符搜索找到文档,所以我知道它们在索引中。

非常感谢任何帮助!干杯!

2 个答案:

答案 0 :(得分:3)

默认的禁用词集确实包含单词“it”。它在StopAnalyzer中定义,它是:

final List<String> stopWords = Arrays.asList(
   "a", "an", "and", "are", "as", "at", "be", "but", "by",
   "for", "if", "in", "into", "is", "it",
   "no", "not", "of", "on", "or", "such",
   "that", "the", "their", "then", "there", "these",
   "they", "this", "to", "was", "will", "with"
 );

SimpleAnalyzerKeywordAnalyzer都没有使用停用词,因此由于其他一些问题而无法解决,可能是对它们如何标记的误解,或者索引和查询时间分析器之间的分歧。

答案 1 :(得分:2)

我尝试重新编制索引而不使用任何停用词......

new IndexWriter(directory,
                new StandardAnalyzer(Version.LUCENE_30, new HashSet<string>()), // No stop words
                true,
                IndexWriter.MaxFieldLength.UNLIMITED);

...之后,只要我使用相同类型的分析器(没有任何停用词)进行搜索,我就可以搜索“ it ”:

new StandardAnalyzer(Version.LUCENE_30, new HashSet<string>()