繁体   English   中英

数据库上的搜索引擎(solr / sphinx)

[英]Search engine (solr/sphinx) on database

我想使我的线程内容可通过诸如solr之类的全文本搜索引擎进行搜索。

我想知道一件事; 我应该只索引thread.title,thread.body和post.body还是应该索引属于线程的用户名,创建日期,帖子的nr,视图,国家,地区和城市?

我的意思是,当用户搜索某个线程时,他们将获得返回的匹配结果,其中包含线程标题,两行正文,该用户发布了该行,创建日期,标签等。

我是否也应该为所有这些信息编制索引? 但这将是整个数据库的全部内容,还是我应该为全文搜索提到的前三列建立索引?

另一个问题:当用户发布新线程时,我必须立即告诉solr添加该行吗? 如果不是的话,如何进行搜索?

我使用过Apache Lucene,但还没有使用过Apache Solr。 所以我在推断一些答案。 但是Lucene索引是Solr的强大力量,因此我认为它几乎是相同的。

我会将您可能想要的所有内容添加为可搜索内容的一部分,或者将其作为搜索结果返回。

请注意,Lucene允许您将字段添加为“未分析”的文档-这意味着这些字段不属于可搜索内容。 但是,当您执行搜索并找到该文档时,会返回额外的字段。 替代方法是仅包含主键,然后在找到匹配的文档后必须使用该主键进行SQL查找。

Lucene还支持针对索引中的特定字段的查询。 因此,您可以将所有字段都包括在索引中,但是如果您希望给定的搜索仅与字段的一部分匹配,则可以这样做。

最后,是的,您必须保持Lucene / Solr索引与数据库中的数据同步。 您可以使用DataImportHandler来帮助将大量数据从RDBMS加载到Solr服务器。 或者,如果需要在创建新线程时对它们进行实时索引,则可以使用Solr的类似REST的HTTP接口发布单个文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM