关于搜索:如何在OpenSearchServer中抓取网页而不为其编制索引?

How can I crawl but not index web pages in OpenSearchServer?

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

具体而言,该网站包括一家拥有自己产品搜索的商店,我将继续搜索产品和类别。产品页面具有类似http://www.thesite/p/123的URL,所以我不想在搜索结果中包括这样的页面。但是,某些产品页面引用了背景信息页面,我希望将它们包含在搜索索引中。

我的问题是过滤器对结果没有影响-它不会过滤出/p//c/结果。如果我取消选中否定框来更改过滤器,则不会获得任何结果,因此似乎是字段的内容或导致问题的过滤器标准。

我尝试在带有url:"http://www.thesite/p/*"的索引的"查询">"过滤器"选项卡中向默认查询"搜索"中添加否定过滤器
但是,尽管"抓取工具">"排除列表"过滤器支持通配符,但查询过滤器似乎不支持通配符。

我尝试在"模式">"字段"中添加一个名为urlField的新字段,并使用使用空白令牌生成器和正则表达式(http://www.thesite/(c|p)/)配置的分析器填充该字段。当我使用"测试"按钮时,似乎为我的测试URL http://www.thesite/p/123生成了两个令牌:

  • http://www.thesite/p/
  • p

我希望能够在"查询">"过滤器"中使用第一个来排除所有商店结果,并且如果需要在某个时间搜索产品页面,可以选择使用p(用于产品)或c(用于类别)在将来。

模式中的urlShop字段设置如下:

1
2
3
4
5
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/"添加到"查询">"过滤器"中,并勾选了否定框。

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

要查看它是否影响返回的结果,我取消了查询过滤器中的否定框,但在默认渲染器中未得到任何结果。这使我相信urlShop字段没有被填充,但是我不确定如何直接检查它。

我想知道是否有更简单的方法来执行此操作,但是如果我的方法在OpenSearchServer的上下文中有意义,请您能帮我找出问题所在吗?

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


终于想通了...

转到查询,然后为您配置的查询点击"编辑"。 然后转到过滤器标签。 添加如下查询过滤器:

1
urlExact:"http://myurltoexclude*"

选中"负数"框。 单击添加。

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