繁体   English   中英

Neo4j Lucene索引-使用通配符执行模糊搜索

[英]Neo4j Lucene index - perform fuzzy search with wildcards

我正在尝试使用Neo4J的Lucene全文索引设置自动建议/自动完成搜索功能。 我希望搜索结果模糊不清。 这是我的代码。

 Index<Node> ind = db.index().forNodes("node_auto_index",
     MapUtil.stringMap( IndexManager.PROVIDER, "lucene", "type", "fulltext" )) ;
 for ( Node node : ind.query("name:" + searchTerm.replace(" ", "?") + "~")) {
     ...
 }

当searchTerm中有空格字符时,就会出现问题。 Lucene将空格视为下一个字段的开头,并引发错误。 我发现可以使用?替换空格字符。 通配符。 但是,如果我这样做,我就不会从Lucene得到任何匹配。 解决此问题的方法是什么?

我也想知道是否可以合并*&〜,因为我希望结果以键入的单词开头,而〜运算符则查找字符串中任意位置的术语

确保将搜索词用双引号引起来。 这是卢克对n-gram的要求。 这是因为它们的语法具有使用空格的保留关键字。

Index<Node> ind = db.index().forNodes("node_auto_index",
    MapUtil.stringMap( IndexManager.PROVIDER, "lucene", "type", "fulltext" )) ;
for ( Node node : ind.query("name:" + ("\"" + searchTerm + "\"") + "~")) {
    ...
}

看到

http://lucene.apache.org/core/2_9_4/queryparsersyntax.html#Fields

http://lucene.apache.org/core/2_9_4/queryparsersyntax.html#Proximity%20Searches

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM