如何使用“喜欢”运算符查询lucene?
通配符 * 只能在单词的末尾使用,例如 。user*
我想用一个赞查询,该怎么做?%user%
通配符 * 只能在单词的末尾使用,例如 。user*
我想用一个赞查询,该怎么做?%user%
LIKE查询的问题在于它们在执行时间方面很昂贵。可以将 QueryParser 设置为允许具有以下各项的前导通配符:
QueryParser.setAllowLeadingWildcard(true)
这将允许您进行搜索,例如:
*user*
但这需要很长时间才能执行。有时,当人们说他们想要一个 LIKE 查询时,他们真正想要的是一个模糊的查询。这将允许您执行以下搜索:
user~
这将与术语和 匹配。您可以使用介于 0 和 1 之间的浮点值指定查询中的术语与要匹配的术语之间的编辑距离。例如,将匹配比 多个术语。users
fuser
user~0.8
user~0.5
我建议你也看看正则表达式查询,它支持Lucene搜索的正则表达式语法。它可能更接近您真正需要的。也许是这样的:
.*user.*
Lucene提供了 ReverseStringFilter,允许像 *user 这样进行前导通配符搜索。它的工作原理是按相反的顺序索引所有术语。
但我认为没有办法做类似“LIKE %user%”的事情。