我正在尝试查找包含首字母缩写词“IT”的文档。
我尝试使用 StandardAnalyzer、SimpleAnalyzer 和 KeywordAnalyzer 进行搜索——结果相同(没有任何命中)。
据我所知,“它”不是默认停用词的一部分吗?
我可以使用通配符搜索找到文档,所以我知道它们在索引中。
任何帮助是极大的赞赏!干杯!
我正在尝试查找包含首字母缩写词“IT”的文档。
我尝试使用 StandardAnalyzer、SimpleAnalyzer 和 KeywordAnalyzer 进行搜索——结果相同(没有任何命中)。
据我所知,“它”不是默认停用词的一部分吗?
我可以使用通配符搜索找到文档,所以我知道它们在索引中。
任何帮助是极大的赞赏!干杯!
默认停用词集确实包含单词“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"
);
既不SimpleAnalyzer
也不KeywordAnalyzer
使用停用词,因此这些不起作用是由于其他一些问题,可能是对它们如何标记化的误解,或者索引和查询时间分析器之间的分歧。
我尝试在没有任何停用词的情况下重新索引...
new IndexWriter(directory,
new StandardAnalyzer(Version.LUCENE_30, new HashSet<string>()), // No stop words
true,
IndexWriter.MaxFieldLength.UNLIMITED);
...然后,只要我使用相同类型的分析器(没有任何停用词)进行搜索,我就可以搜索“它”:
new StandardAnalyzer(Version.LUCENE_30, new HashSet<string>()