如何在OpenSearchServer中抓取但不索引网页?
我正在使用OpenSearchServer在网站上提供搜索功能。我想对网站上的所有页面进行爬网,以获取链接,但我想从索引中排除一些页面。我想不出怎么做 具体来说,该网站包括一个商店,有自己的产品搜索,我保持这种产品和类别的搜索。产品页面具有类似如何在OpenSearchServer中抓取但不索引网页?,search,indexing,web-crawler,opensearch,Search,Indexing,Web Crawler,Opensearch,我正在使用OpenSearchServer在网站上提供搜索功能。我想对网站上的所有页面进行爬网,以获取链接,但我想从索引中排除一些页面。我想不出怎么做 具体来说,该网站包括一个商店,有自己的产品搜索,我保持这种产品和类别的搜索。产品页面具有类似http://www.thesite/p/123所以我不想在搜索结果中包含任何类似的页面。但是,有些产品页面引用背景信息页面,我希望这些页面包含在搜索索引中 我的问题是过滤器对结果没有影响-它不会过滤掉/p/和/c/结果。如果通过取消勾选负号框来更改筛选器
http://www.thesite/p/123
所以我不想在搜索结果中包含任何类似的页面。但是,有些产品页面引用背景信息页面,我希望这些页面包含在搜索索引中
我的问题是过滤器对结果没有影响-它不会过滤掉/p/
和/c/
结果。如果通过取消勾选负号框来更改筛选器,则不会得到任何结果,因此似乎是字段内容或筛选器条件导致了问题
我已尝试在索引上的“查询>过滤器”选项卡中,使用url:”向名为“搜索”的默认查询添加负过滤器:http://www.thesite/p/*“
但是,尽管Crawler>排除列表过滤器支持通配符,但查询过滤器似乎不支持通配符
我尝试在Schema>Fields中添加一个名为urlField的新字段,并使用使用空格标记器和正则表达式(http://www.thesite/(c|p)/
)。当我使用Test按钮时,它似乎为我的测试URLhttp://www.thesite/p/123
:
http://www.thesite/p/
p
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我清除了索引内容,再次运行爬网并运行运行时>命令>优化命令。