如何在lucene搜索過程中使用ADC來排除不需要的項目? (鑑於我有幾百萬的項目) 鑑於不需要的項目是不時有所不同,因此,我不可能使用配置文件排除它。Sitecore:在lucene搜索過程中排除項目
2
A
回答
4
根據我的理解,您希望能夠手動設置某些項目排除在搜索結果中。
最簡單的解決方案是將一些Exclude
布爾標誌添加到基本模板,並在搜索項目時檢查此標誌。
另一種解決方案是創建一些設置頁面,其中multilist
字段用於搜索中排除的項目,然後將所選項目的ID傳遞給搜索查詢,從搜索中排除它們。
3
下面是一個非常廣泛的概述,你需要做什麼才能做到這一點。它所做的是防止在sitecore中檢查複選框字段的項目甚至無法獲得索引。對不起,這並不容易!
要求:高級數據庫抓取:http://marketplace.sitecore.net/en/Modules/Search_Contrib.aspx
1)複選框字段添加到Sitecore的基本模板,標題或任何「從搜索中排除」。
2)創建您的自定義索引搜尋器,將索引新字段。
namespace YourNamespace
{
class MyIndexCrawler : Sitecore.SharedSource.SearchCrawler.Crawlers.AdvancedDatabaseCrawler
{
protected override void AddSpecialFields(Lucene.Net.Documents.Document document, Sitecore.Data.Items.Item item)
{
base.AddSpecialFields(document, item);
document.Add(CreateValueField("exclude from search",
string.IsNullOrEmpty(item["Exclude From Search"])
? "0"
: "1"));
3)配置Lucene的,如果你不使用包括使用新的自定義索引爬蟲(Web.config文件)
<configuration>
<indexes hint="list:AddIndex">
...
<locations hint="list:AddCrawler">
<master type="YourNameSpace.MyIndexCrawler,YourNameSpace">
<Database>web</Database>
<Root>/sitecore/content</Root>
<IndexAllFields>true</IndexAllFields>
4)配置您的搜索查詢
var excludeQuery = new BooleanQuery();
Query exclude = new TermQuery(new Term("exclude from search", "0"));
excludeQuery.Add(exclude, BooleanClause.Occur.MUST);
5)獲取您的搜索結果
var db = Sitecore.Context.Database;
var index = SearchManager.GetIndex("name_of_your_index"); // I use db.Name.ToLower() for my master/web indexes
var context = index.CreateSearchContext();
var searchContext = new SearchContext(db.GetItem(rootItem));
var hits = context.Search(excludeQuery, searchContext);
注意:您顯然可以在這裏使用組合查詢來獲得更多的搜索靈活性!
相關問題
- 1. Sitecore的Lucene的搜索排除項目
- 2. 如何訪問Sitecore Lucene通過項目Web API搜索?
- 3. 在Sitecore的Lucene搜索索引
- 4. Sitecore搜索排名
- 5. Kibana/Solr Lucene搜索排除以$
- 6. 使用Lucene實現Sitecore搜索
- 7. Sitecore lucene搜索/現場助推
- 8. Sitecore:使用lucene進行全文搜索
- 9. Sitecore + Lucene搜索FieldQuery和空字符串
- 10. Sitecore多站點Lucene搜索相關度
- 11. 如果在lucene Search中包含單個搜索字段的項目時如何排除該項目?
- 12. 使用SitecoreRocks按ID搜索Sitecore項目
- 13. 通過Sitecore包在多個環境中刪除Sitecore項目
- 14. Sitecore的Lucene索引
- 15. 排序Lucene搜索結果
- 16. Sitecore Droptree不會排除項目
- 17. Sitecore Lucene搜索提取多語言站點搜索中的其他語言項目
- 18. 如何使用具有特定日期的Sitecore項目執行Lucene搜索?
- 19. Lucene在2個網站的sitecore中搜索
- 20. Lucene在Sitecore中搜索;沒有結果返回
- 21. 如何從索引中刪除sitecore項目字段以進行coveo搜索
- 22. 在搜索中排除
- 23. 使用Lucene的Sitecore索引
- 24. Sitecore 6.6 - 設置Lucene索引
- 25. Sitecore 7索引trellist lucene
- 26. Lucene在Alfresco中搜索
- 27. 在Lucene中布爾搜索
- 28. 在Lucene中搜索字段
- 29. 在Lucene中搜索短語
- 30. Textmate,從項目搜索中排除文件(類型?)
我有多列表字段來保存所有不需要的項目不被搜索。但是我如何更新我不想要的項目的lucene? – WenHao
只需遍歷多列表值並添加一個新的'ID'作爲關鍵字,並添加一個'TermQuery',並將列表中的值作爲'Occur'設置爲'BooleanClause.Occur.MUST_NOT'。 –