如何用lucene搜索单词模式

时间:2017-06-23 23:53:06

标签: java lucene

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

我没有索引句子,只是单个词或复合词。

如何在单词中搜索模式:

  1. 开头
  2. 结尾
  3. 包含
  4. 我要编制索引的示例单词是:

    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);
    

    更新的 以上代码是否正确?

    有没有办法让我能以某种方式对单词进行分类,所以我只能搜索给定类别中的单词?

1 个答案:

答案 0 :(得分:1)

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

使用它像:

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

请注意,以*开头的查询在运行时可能会很慢。工作wildcard query example