我使用lucene的内存搜索索引索引字典单词。
我不是在索引句子,而是单个单词或复合字。
我如何搜索一个单词中的模式:
- 以 开头
- 以 结尾
- 包含
所以我要索引的示例单词是:
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"));
请注意,从"开始"开始的查询可能会很慢。一个工作的通配符查询示例。