Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我必须在solr中创建模式吗?如果我使用文档,如何在solr中添加同义词和拼写错误功能_Solr_Spring Roo_Solrj - Fatal编程技术网

我必须在solr中创建模式吗?如果我使用文档,如何在solr中添加同义词和拼写错误功能

我必须在solr中创建模式吗?如果我使用文档,如何在solr中添加同义词和拼写错误功能,solr,spring-roo,solrj,Solr,Spring Roo,Solrj,我使用roo生成了以下Springbean <bean class="org.apache.solr.client.solrj.impl.CommonsHttpSolrServer" id="solrServer"> <constructor-arg value="${solr.serverUrl}"/> </bean> 其用途如下: @Autowired transient SolrServer Address.solrServer; @Asyn

我使用roo生成了以下Springbean

<bean class="org.apache.solr.client.solrj.impl.CommonsHttpSolrServer" id="solrServer">
    <constructor-arg value="${solr.serverUrl}"/>
</bean>
其用途如下:

@Autowired
transient SolrServer Address.solrServer;

@Async
public static void Address.indexAddresses(Collection<Address> addresses) {
    List<SolrInputDocument> documents = new ArrayList<SolrInputDocument>();
    for (Address address : addresses) {
        SolrInputDocument sid = new SolrInputDocument();
        sid.addField("id", "address_" + address.getId());
        sid.addField("address.id_i", address.getId());
        // Add summary field to allow searching documents for objects of this type
        sid.addField("address_solrsummary_t", new StringBuilder().append(address.getId()));
        documents.add(sid);
    }
    try {
        SolrServer solrServer = solrServer();
        solrServer.add(documents);
        solrServer.commit();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
@Autowired
瞬态SolrServer地址。SolrServer;
@异步的
公共静态无效地址。索引地址(集合地址){
列表文档=新建ArrayList();
收件人(地址:地址){
SolrInputDocument sid=新的SolrInputDocument();
sid.addField(“id”,“address_”+address.getId());
sid.addField(“address.id_i”,address.getId());
//添加摘要字段以允许在文档中搜索此类型的对象
sid.addField(“address\u solrsummary\u t”,new StringBuilder().append(address.getId());
文件。添加(sid);
}
试一试{
SolrServer SolrServer=SolrServer();
添加(文档);
提交();
}捕获(例外e){
e、 printStackTrace();
}
}
我的问题是:

我必须在solr中创建模式才能在solr中索引它,还是这段代码足够好?

除此之外,我的应用程序是一个多层架构,而网站只是其中的一小部分。那么,我如何删除被windows应用程序或android应用程序删除的数据呢

一个解决方案是重新创建索引,但它不会导致solr中的统计数据丢失,而solr用于使搜索结果更有效(我不确定这一点)

如何在solr中添加同义词搜索,以及如何初始化拼写错误附加组件(单词可以是基本上不来自词典的人名或地名)

很抱歉合并了多个问题。提前感谢你的帮助

我必须在solr中创建模式才能在solr中索引它吗 这个代码足够好吗

是的,您应该有schema.xml文件,并且应该在其中定义要索引的字段

除此之外,我的应用程序是一个多层体系结构和 网站只是其中的一小部分。那么,我怎样才能删除这些数据呢 被windows应用程序或android应用程序删除

您可以使用以下代码段删除文档。假设存在一个值为12345的字段id。您可以在
标记之间编写查询

http://localhost:8983/solr/update?stream.body=<delete><query>id:12345</query></delete>&commit=true
http://localhost:8983/solr/update?stream.body=id:12345&commit=true
一种解决方案是重新创建索引,但它不会导致 solr中的统计信息丢失,用于使搜索结果更精确 有效(我不确定)

顺便说一句,默认情况下不会保存搜索统计信息,所以重新创建索引可能是一个解决方案

如何在solr中添加同义词搜索,如何初始化 拼写错误附加组件(单词可能是人名或地名 基本上不是从字典里查出来的


您可以将SynonymFilterFactory添加到schema.xml文件的字段定义中。

谢谢您的帮助!!!我已经创建了一个模式并为我的数据编制了索引。你能分享一下我在索引中的一个字段中实现同义词过滤工厂和拼写检查的好教程吗?你不需要实现它。它已经实施。您只需要在schema.xml文件的字段定义中配置它。您可以在这里找到示例:谢谢!!但它说它将取代这个词。如果用户搜索被替换的单词怎么办??我将如何实现相同的is搜索查询,或者它将自己实现?如果您将I-pod和ipod定义为同义词,然后搜索I-pod,那么它将用ipod替换I-pod并进行搜索。因此,它不会替换原始单词。
http://localhost:8983/solr/update?stream.body=<delete><query>id:12345</query></delete>&commit=true