Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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
Php 数据库上的搜索引擎(solr/sphinx)_Php_Database_Indexing_Solr - Fatal编程技术网

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

Php 数据库上的搜索引擎(solr/sphinx),php,database,indexing,solr,Php,Database,Indexing,Solr,我想让我的线程内容搜索与全文搜索引擎,如索尔 我想知道一件事;我应该只索引thread.title、thread.body和post.body,还是应该索引属于thread的用户名、创建日期、帖子数量、视图、国家、地区和城市 我的意思是,当用户搜索一个线程时,他们会得到包含线程标题、2行正文(用户发布了该线程)、创建日期、标记等内容的返回结果 我应该把这些信息也编入索引吗?但是,它将几乎是整个数据库,或者我应该仅仅索引我提到的用于全文搜索的前3列吗 另一个问题:当用户发布新线程时,我必须立即告诉

我想让我的线程内容搜索与全文搜索引擎,如索尔

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

我的意思是,当用户搜索一个线程时,他们会得到包含线程标题、2行正文(用户发布了该线程)、创建日期、标记等内容的返回结果

我应该把这些信息也编入索引吗?但是,它将几乎是整个数据库,或者我应该仅仅索引我提到的用于全文搜索的前3列吗


另一个问题:当用户发布新线程时,我必须立即告诉solr添加该行?如果我没有,它将如何进行搜索?

我已经使用了ApacheLucene,但还没有使用ApacheSolr。所以我推断了一些答案。但是Lucene索引是Solr的动力,所以我认为它几乎是一样的

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

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

Lucene还支持对索引中特定字段的查询。因此,您可以在索引中包含所有字段,但如果您希望给定的搜索仅与字段的子集匹配,则可以这样做


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

thx感谢您如此彻底的回答。如果我使用sql来查找其他所有内容,那么我必须在php中运行它。然后我不能只使用jquery和solr。我必须使用jQueryAjax将变量发送到php,然后php联系solr,获取信息,然后执行sql查找,然后将其返回到jquery。这听起来比直接通过jquery获取solr数据更像是编码。因此,我可能应该像你说的那样索引所有内容,而其他内容则不可搜索。我使用什么命令用php向solr发送查询字符串并从solr获取数据??由于solr有一个REST接口,您可以使用php的curl扩展来发出请求:只有您知道应用程序需要搜索什么样的信息。这就像询问您应该在关系数据库中存储什么样的信息。请针对不同的问题创建单独的问题。不要把每件事都放在同一个问题上。