使用solr查询部分阶段

时间:2012-12-18 03:49:53

标签: solr solr-query-syntax

我有一个带有人名的文件,我想根据部分名称返回这些文件,例如:

查询:“Joseph Gar *”

应该返回

Joseph Garret
Joseph Garnier

如何使用solr进行查询?

我试过了:

q=complete_name:"Joseph Gar*"
q=complete_name:"Joseph Gar"~5
q=complete_name:(Joseph AND Gar)

2 个答案:

答案 0 :(得分:0)

您可以尝试以下查询: -

q = complete_name:Joseph Gar *

然后对Joseph和Gar按指定顺序匹配的那些短语进行推动。请注意,上述内容也会产生名称如“Garret Joseph”的结果。但是,由于提升,这些结果将被推倒。

但是,如果您只喜欢符合上述顺序的结果,那么我建议您查看以下链接: -

https://issues.apache.org/jira/browse/SOLR-1604

以上讨论了短语中的通配符。

注意: - 当我使用上面的jar文件时,有时候,我得到一个超出的最大布尔子句数(可以在solrconfig.xml中增加。但是,它仍然有可能不够)

答案 1 :(得分:0)

在schema.xml中尝试使用以下字段类型(complete_name),

<fieldType name="text_search" class="solr.TextField" sortMissingLast="true" omitNorms="true">
    <analyzer>
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory" />  
    </analyzer>   
</fieldType>

并且schema.xml中的字段定义类似于

<field name="complete_name" type="text_search" indexed="true" stored="true"/>

并使用

等查询进行搜索
q=complete_name:*Joseph\ Gar*

要处理字母和数字以外的特殊字符,请在每个字符前使用转义字符\ on。示例:要搜索包含$的文本,请输入q = * \ $ *

希望这个答案可以解决您的问题。