当两个单词之间存在空格时,如何搜索单词的一部分。我的查询如下
/select?q=*:*&fq=pageType:program&fl=programLocation&rows=100&fq=programLocation:"Mohali"
我得到的结果如下
"response":{"numFound":3,"start":0,"docs":[
{
"programLocation":["Mohali"]},
{
"programLocation":["Mohali"]},
{
"programLocation":["Mohali and Hyderabad"]}]
我只想取回“莫哈利”,但现在我得到了“莫哈里”和“莫哈利海得拉巴”。如何形成一个只获取莫哈利的查询?
2条答案
按热度按时间pu3pd22g1#
您需要将
string
用作字段programLocation
的fieldtype
。将字符串应用为
fieldtype
,然后重新索引数据。String
将单词/句子存储为精确的字符串,而不执行任何标记化。它在存储精确匹配的情况下非常有用,例如,刻面、排序。string
类型的反义词是text
。Text
对数据进行标记化,执行诸如小写等处理。当我们想匹配句子的一部分时,它很有用。如果要实现小写搜索,请为您的字段使用以下字段类型。
如果有空格,也可以在小写过滤器工厂之后使用下面的过滤器。
然后您的字段定义如下所示
bxfogqkk2#
与java中的lucene搜索完全匹配
?q="Your search"~0
您可以使用整数来定义单词之间的最大距离
?q="Your search"~2
示例:“这是一个令人敬畏的精确匹配示例”
?q="awesome exemple"~0
将匹配?q="awesome exact match"~0
不匹配?q="awesome exact match"~2
将匹配