solr-lucene中的索引

solr-lucene中的索引,lucene,indexing,solr,search-engine,Lucene,Indexing,Solr,Search Engine,我有一个网站,用户可以在其中发布一些问题,所以我在mysql中有一个这样的表 问题id、用户id、标记、视图、创建日期 我想要的是能够 执行搜索,根据这些搜索返回问题\u ID 标签 然后按顺序订购 观点 日期(如最新的,或本周,月) 或搜索指定的用户,然后再次返回问题ID 按视图和日期排序 就索引而言,我应该以什么方式将所有内容都纳入solr? 我需要索引标签、视图、日期吗?如果使用lucene/solr对您有好处,我应该索引什么以获得最佳性能?想想看。我不想被误解,但如果你想在一列用户

我有一个网站,用户可以在其中发布一些问题,所以我在mysql中有一个这样的表

问题id、用户id、标记、视图、创建日期

我想要的是能够

  • 执行搜索,根据这些搜索返回问题\u ID 标签

    然后按顺序订购

  • 观点
  • 日期(如最新的,或本周,月)
  • 或搜索指定的用户,然后再次返回问题ID 按视图和日期排序
就索引而言,我应该以什么方式将所有内容都纳入solr?
我需要索引标签、视图、日期吗?如果使用lucene/solr对您有好处,我应该索引什么以获得最佳性能?

想想看。我不想被误解,但如果你想在一列用户id中搜索特定的用户id,你不需要额外的全文搜索引擎

不管怎样-也许你只喜欢有一个小项目“玩”索尔。 以下是您的问题的答案:

就索引而言,我应该以什么方式将所有内容都纳入solr 担心

将所有内容放到solr/lucene,您需要搜索。使用DHI(数据导入处理程序)让solr遍历表并索引数据

我需要索引标签、视图、日期吗

对。你必须为所有你喜欢的工作编制索引。 顺便说一句:索引和存储数据是有区别的。您可以索引字段(如标记、用户id、视图等),但不需要将它们(附加)存储在lucene索引中。如果lucene/solr必须返回/交付搜索到的数据,则需要存储数据。 否则,solr只返回匹配文档的uniqueKey(主键),您必须从datebes中获取数据(…其中pk=) 因此,您不需要存储那些仅与排序相关的字段(例如)

我应该索引什么以获得最佳性能


只索引那些您需要使用的字段(列)(solr)。不要索引您永远不会要求/搜索的字段。

好的,我知道没有必要搜索用户ID。但是对于第一部分,如果solr创建了这些标记的反向索引,在查询之后它找到了例如30000个问号,我想让solr按照视图对它们进行排序,这样我就只能得到例如从800到900个问号,我如何才能获得最大的性能?答案是通过索引标签、视图和存储问题\u id,以便我可以在mysql中查找它们吗?视图的索引是否会确保不会花费很长的时间,以便对有关性能问题的问题进行排序。我使用lucene索引,大约为1。100万份文件。搜索一个频繁的关键词,获得90000点击率,按相关性排序,按日期提升,返回前30个结果需要-总共不到50毫秒。如果有(子查询)缓存命中,通常需要少于10毫秒。最后,它取决于您的文档大小。但是我从来没有意识到排序是一个性能问题。>>它会发现例如30000个问题ID,我想从solr按视图对它们进行排序,这样我只得到例如从第800到第900个问题ID,我的意思是从这30000个问题ID中只得到第800到第900个,而不是从第一个到第100个结果,比如在谷歌,当你点击第12页时。顺便说一句,使用solr,您可以定义(每次搜索)偏移量和想要获取的文档(行)数。所以,如果你的页面包含20次点击/结果,那么你的偏移量是0,20,40,以此类推。对于30000个文档,在第1页或第12页的查询时间之间,您不会注意到任何性能问题。