如何使用lucene搜索在字段值中至少出现一个字符时获得搜索命中率

如何使用lucene搜索在字段值中至少出现一个字符时获得搜索命中率,lucene,Lucene,使用lucene search,当字段值中至少存在一个已搜索的字符时,如何获得搜索命中率 只有当我用一个完整的词搜索时,我才得到搜索点击率 例如: 你好,世界 在上面的例子中,如果我输入“Hello”,那么我将得到一个点击,但如果我输入“Hel”则不会 以下是我获得点击率的代码: QueryParser parser = null; Query query = null; Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURREN

使用lucene search,当字段值中至少存在一个已搜索的字符时,如何获得搜索命中率

只有当我用一个完整的词搜索时,我才得到搜索点击率

例如: 你好,世界

在上面的例子中,如果我输入“Hello”,那么我将得到一个点击,但如果我输入“Hel”则不会

以下是我获得点击率的代码:

QueryParser parser = null;
Query query = null;
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT, new HashSet());
BooleanQuery.setMaxClauseCount(32767);
parser = new QueryParser("fieldname", analyzer);
parser.setAllowLeadingWildcard(true);
query = parser.parse("searchString");
TopDocs topResultDocs = searcher.search(query, null, 20);

始终将
*
附加到查询以获取所有后缀匹配:
Hel*
将匹配
Hello

如果Hel出现在诸如“abchelbc abcdef”之类的字符串中,我也需要获得HIT如果您试图复制SQL
如“%foo%”行为,请阅读以下答案:如果您对答案感到满意,您可能会想要。这就是这个网站的工作原理。非常感谢。例如:在“Hi Hello world”句子中,如果我输入“Hello wo”,我需要点击。我需要做的是得到解决方案:TokenStream TokenStream=analyzer.TokenStream(字段,new StringReader(searchString));List tokens=new ArrayList();termtattribute=(termtattribute)tokenStream.getAttribute(termtattribute.class);while(tokenStream.incrementToken()){String term=termtattribute.term();tokens.add(term);}BooleanQuery BooleanQuery=new BooleanQuery();对于(inti=0;i