如何使用Lucene搜索单词模式



我使用lucene的内存搜索索引索引字典单词。

我不是在索引句子,而是单个单词或复合字。

我如何搜索一个单词中的模式:

  1. 开头
  2. 结尾
  3. 包含

所以我要索引的示例单词是:

car
boat
singlehome
apartment
programmer
hello
and
last
first

因此,根据评论中链接的示例,我这样做:

Analyzer analyzer = new SimpleAnalyzer(version);
 MemoryIndex index = new MemoryIndex();
 index.addField("word", "car", analyzer);
 index.addField("word", "boat", analyzer);
 index.addField("word", "singlehome", analyzer);
 index.addField("word", "apartment", analyzer);
 QueryParser parser = new QueryParser(version, "content", analyzer);

更新以上代码正确吗?

有没有一种方法可以以某种方式对单词进行分类,因此我只能在给定类别中搜索单词?

您可以使用Wildcardquery。允许的通配符是[*,?,]。

使用它:

Query query = new WildcardQuery(new Term("contents", "prog*"));
Query query = new WildcardQuery(new Term("contents", "*er"));

请注意,从"开始"开始的查询可能会很慢。一个工作的通配符查询示例。

最新更新