Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
如何在OpenSearchServer中抓取但不索引网页?_Search_Indexing_Web Crawler_Opensearch - Fatal编程技术网

如何在OpenSearchServer中抓取但不索引网页?

如何在OpenSearchServer中抓取但不索引网页?,search,indexing,web-crawler,opensearch,Search,Indexing,Web Crawler,Opensearch,我正在使用OpenSearchServer在网站上提供搜索功能。我想对网站上的所有页面进行爬网,以获取链接,但我想从索引中排除一些页面。我想不出怎么做 具体来说,该网站包括一个商店,有自己的产品搜索,我保持这种产品和类别的搜索。产品页面具有类似http://www.thesite/p/123所以我不想在搜索结果中包含任何类似的页面。但是,有些产品页面引用背景信息页面,我希望这些页面包含在搜索索引中 我的问题是过滤器对结果没有影响-它不会过滤掉/p/和/c/结果。如果通过取消勾选负号框来更改筛选器

我正在使用OpenSearchServer在网站上提供搜索功能。我想对网站上的所有页面进行爬网,以获取链接,但我想从索引中排除一些页面。我想不出怎么做

具体来说,该网站包括一个商店,有自己的产品搜索,我保持这种产品和类别的搜索。产品页面具有类似
http://www.thesite/p/123
所以我不想在搜索结果中包含任何类似的页面。但是,有些产品页面引用背景信息页面,我希望这些页面包含在搜索索引中

我的问题是过滤器对结果没有影响-它不会过滤掉
/p/
/c/
结果。如果通过取消勾选负号框来更改筛选器,则不会得到任何结果,因此似乎是字段内容或筛选器条件导致了问题

我已尝试在索引上的“查询>过滤器”选项卡中,使用
url:”向名为“搜索”的默认查询添加负过滤器:http://www.thesite/p/*“
但是,尽管Crawler>排除列表过滤器支持通配符,但查询过滤器似乎不支持通配符

我尝试在Schema>Fields中添加一个名为urlField的新字段,并使用使用空格标记器和正则表达式(
http://www.thesite/(c|p)/
)。当我使用Test按钮时,它似乎为我的测试URL
http://www.thesite/p/123

  • http://www.thesite/p/
  • p
我希望能够使用查询>过滤器中的第一个来排除所有的商店结果,如果将来需要搜索产品页面,还可以选择使用p(用于产品)或c(用于类别)

架构中的urlShop字段设置如下:

Indexed: yes
Stored: no (because I don't need the field back, just want to be able to filter on it)
TermVector: No
Analyzer: urlShop
Copy of: url
我添加了
urlFilter:“http://www.thesite/p/“
to Query>勾选负框的过滤器

当我使用默认渲染器时,这似乎对结果没有影响

为了查看它是否会影响返回的结果,我在查询过滤器中取消勾选了负数框,在默认渲染器中没有得到任何结果。这让我相信urlShop字段没有被填充,但我不知道如何直接检查它

我想知道是否有一种更简单的方法可以做到这一点,但如果我的方法在OpenSearchServer环境中有意义,请您帮助我找出问题所在


该网站在IIS下运行,OpenSearchServer将配置在Tomcat中运行的同一台服务器上。

最终解决了这个问题

转到“查询”并单击“编辑”以获取已配置的查询。然后转到“过滤器”选项卡。添加如下所示的查询筛选器:

urlExact:"http://myurltoexclude*"
勾选“否定”框。单击添加


现在,请确保在右侧的小按钮中单击“保存”。这是我错过的部分。URL仍在数据库和爬网中,但至少不会在结果中返回它们。

我已将搜索正则表达式更改为RegularExpressionReplaceFilter,并将其作为搜索词:http://....?\.thesite\.co\.uk/()/.*使用替换项:%1,查询现在可以使用应用的以下一对筛选器工作:urlZone:p urlZone:c我清除了索引内容,再次运行爬网并运行运行时>命令>优化命令。