gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:05:19 30 4
gpt4 key购买 nike

我正在尝试使用 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 得到任何匹配。解决这个问题的方法是什么?

另外,我想知道是否可以组合 * 和 ~,因为我希望结果以键入的单词开头,而 ~ 运算符会查找字符串中任何位置出现的术语

最佳答案

确保将搜索词括在双引号中。这是 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

关于java - Neo4j Lucene索引-使用通配符执行模糊搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23305878/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com