我正在编制索引并搜索5个字段,这些字段以各种方式进行标记化/过滤
但是,我想在搜索时,如果我输入的查询与字段1中的值匹配,那么这将是我得到的最佳结果。
我该如何定义:
在我的架构中,我有字段
<field name="na_title" type="text_names" indexed="true" stored="false" required="true" />
text_names是:<fieldType name="text_names" class="solr.StrField" />
我有只有一个条目,其中na_title =“somthing正在进行中”。但是,当我搜索时
text_names:somthing is going on here
我得到了很多结果
只是指出它,该字段上没有分析器和过滤器,无论是查询还是索引操作。
答案 0 :(得分:1)
来自manual:
Lucene允许通过“提升”来影响搜索结果 一个级别:
- 文档级别提升 - 在索引时 - 通过调用 将文档添加到索引之前的document.setBoost()。
- 文档的字段级别提升 - 在索引时 - 通过调用 field.setBoost()在向文档添加字段之前(以及之前) 将文档添加到索引中)。
- 查询级别提升 - 期间 搜索,通过设置查询子句的提升,调用 Query.setBoost()。
答案 1 :(得分:1)
您需要将字段索引两次 - 一次分析,一次不分析。然后,您可以增加非分析字段中的匹配项。
快捷方式可以是将所有这些字段索引为字符串,并使用copyfield将它们作为文本复制到catch-all字段中。这样可以简化查询并减少重复字段的数量。